【问题标题】:how to auto fill an IntegerField in django model based on a M2M relation?如何根据 M2M 关系在 django 模型中自动填充 IntegerField?
【发布时间】:2021-12-01 17:03:10
【问题描述】:

我有一个名为 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()

我该怎么做?

【问题讨论】:

    标签: python django orm m2m


    【解决方案1】:

    您可以在此处使用 Django 信号文档Django Post-save signal 这将在对象存储在 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()
    

    更新:django 模型中的 m2m 字段在记录保存到 db 后更新。所以可以使用 post_save 信号。

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 2018-12-22
      • 2023-03-08
      • 2015-12-23
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      相关资源
      最近更新 更多