我有一个名为Post的模型,这个模型与另一个名为LikeIps的模型有多对多关系。
class Post(models.Model):
title = models.CharField(max_length=250)
summary = models.TextField()
content = RichTextField()
likes = models.ManyToManyField(LikeIP, related_name="liked_posts", blank=True)
like_count = models.IntegerField(editable=False)
def __str__(self):
return self.title
我想根据likes
查询集中的对象数量自动填充likes_count
字段,如下所示:
like_count = obj.likes.count()
我该怎么做呢?
你可以在这里使用Django信号文档Django Post-save信号这将在对象存储在db中时调用,因此您可以在实例中进行更改。
@receiver(post_save, sender=Post)
def save_post(sender, instance, created, **kwargs):
# or some other checks/logic
if created:
instance.like_count = obj.likes.count()
instance.save()
Update: m2m字段在django模型中保存到db后被更新。因此可以使用postrongave信号。