如何自动填充一个IntegerField在django模型基于M2M关系?



我有一个名为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信号。

相关内容

  • 没有找到相关文章

最新更新