1

私は持っている:

class Profile(models.Model):
    user = models.OneToOneField(User)
    birthday = models.DateField(null=True)
    gender = models.CharField(max_length=140)  
    profile_picture = models.URLField()

class Follow(models.Model):
    follower = models.ForeignKey(User, related_name="who_follows")
    followed = models.ForeignKey(User, related_name="who_is_followed")
    follow_time = DateTimeField(auto_now=True)

では、followers_count を取得するには、ProfileResource を何にする必要がありますか? または、ユーザーが新しいフォロワーを持っていることを POST できますか?

私の ProfileResource は次のとおりです。

class ProfileResource(ModelResource):
    followers_count = Follow.objects.filter(followed=)
    class Meta:
        queryset = User.objects.all()
        resource_name = 'profile'
        filtering = {
            'username': ALL,
        }

それは最善の方法ですか?または、次のように使用する必要があります。

class Profile(models.Model):
    user = models.OneToOneField(User)
    birthday = models.DateField(null=True)
    gender = models.CharField(max_length=140)  
    profile_picture = models.URLField()
    followers = ToManyField('self')
    following = ToManyField('self')
4

2 に答える 2

1

属性を介してフォロワーの数を取得できるはずです。次のようなものを試してください:

class Profile(models.Model):
    ...
    def followers_count(self):
        return self.user.who_is_followed.all().count()

class ProfileResource(ModelResource):
    followers_count = fields.CharField(attribute='followers_count')
    ...
于 2012-08-01T07:47:52.763 に答える
0

クエリセットでフォロワーの数に注釈を付けることができるはずです。これにより、1回のデータベース呼び出しで注釈を付けることができます。

queryset = User.objects.annotate(number_of_followers=Count('follow'))
于 2012-08-01T08:10:17.933 に答える