Python ManyToManyField-django rest框架中的类计数
在models.py中:Python ManyToManyField-django rest框架中的类计数,python,django,django-rest-framework,Python,Django,Django Rest Framework,在models.py中: class Post(models.Model): body = models.TextField(max_length=10000) date = models.DateTimeField(auto_now_add=True, blank=True) user = models.ForeignKey(User, on_delete=models.CASCADE) liked_by = models.ManyToManyField(Use
class Post(models.Model):
body = models.TextField(max_length=10000)
date = models.DateTimeField(auto_now_add=True, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
liked_by = models.ManyToManyField(User, blank=True, related_name='liked_by')
class Meta:
ordering = ['-date']
在serializers.py中:
class PostSerializer(serializers.ModelSerializer):
user = UserSerializers()
class Meta:
model = Post
fields = ('body','date','user')
如何计算单个帖子的喜好?并显示哪个用户喜欢该帖子。您的“喜欢”字段仅引用用户模型,而不是用户模型,并且您只有喜欢您的帖子但喜欢数量的用户。因此,您可以查询特定的帖子并统计用户数量,但我建议使用单独的类计数字段
您可以使用SerializerMethodField获得帖子的总喜欢度
from rest_framework.fields import SerializerMethodField
class PostSerializer(serializers.ModelSerializer):
user = UserSerializers()
total_likes = SerializerMethodField()
class Meta:
model = Post
fields = ('body','date','user')
def get_total_likes(self, instance):
return instance.liked_by.all().count()
如果您正在使用django构建rest应用程序,请尝试避免使用m2m关系,因为DRF实际上不支持它(它引入了许多嵌套对象)sir@SLDem,那么我应该使用什么来代替许多关系呢?我是drftry的新手,创建一个单独的关系表,每个关系成员有2个外键,并从中提取数据
class PostSerializer(serializers.ModelSerializer):
user = UserSerializers()
total_likes = serilaizers.SerializerMethodField()
liked_by = UserSerializers(many=True)
class Meta:
model = Post
fields = ('body','date','user', 'total_likes', 'liked_by')
def get_total_likes(self, instance):
return instance.liked_by.count()