django检查模型表是否有对象

时间:2013-10-27 07:26:46

标签: python django

我有一个像波纹管一样的模特。

class User(BaseModel,DjangoUser):
    uuid = models.CharField(max_length=100, blank=True)
    realname = models.CharField(max_length=100, blank=True)
    followers = models.ManyToManyField('self', through='FollowRelationship', symmetrical=False, related_name='followed_by')

    def follow(self, person):
        relationship, created = FollowRelationship.objects.get_or_create(from_person=self,to_person=person)
        return created

   def unfollow(self, person):
        fs = FollowRelationship.objects.filter(from_person=self,to_person=person)
        if fs is not None:
            fs.delete()
            return True
        return False

class FollowRelationship(models.Model):
    from_person = models.ForeignKey(User, related_name='from_user')
    to_person = models.ForeignKey(User, related_name='to_user')
    follow_time =  models.DateTimeField(default=datetime.datetime.now)

如果我有两个用途A和B,我使用A in B.followers.all()检查A是否跟随B。 这样做很好,如果B.followers有10000000个对象,这是一个很好的方法吗?

另一个问题是,如果我在我的(android)应用程序中跟踪用户,A in B.followers.all()将返回false一段时间并返回true。如果我重新启动django服务器,它将立即成为现实。问题是什么?

1 个答案:

答案 0 :(得分:1)

从文档中看来,.exists()更合适,更快。

您可以检查

if B.followers.filter(from_person=A).exists():

对于第二个问题,它可能是django queryset缓存问题。是在某种观点吗?

相关问题