python - Django manytomany 信号?

标签 python django django-models django-signals

<分区>

假设我有这样的模型

class Event(models.Model)
    users_count = models.IntegerField(default=0)
    users = models.ManyToManyField(User)

如果事件添加/删除一些用户,您会建议如何更新 users_count 值?

最佳答案

如果可能的话,您可以引入 Participation 模型来加入事件和用户:

class Participation(models.Model):
    user = models.ForeignKey(User)
    event = models.ForeignKey(Event)

class Event(models.Model):
    users = models.ManyToManyField(User, through='Participation')

并处理 Participation 发送的 pre_save 信号以更新 instance.event 计数。它将显着简化 m2m 的处理。在大多数情况下,后来证明某些逻辑和数据最适合中间模型。如果您不是这种情况,请尝试自定义解决方案(无论如何,您不应该有很多代码路径将用户添加到事件中)。

关于python - Django manytomany 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1958540/

相关文章:

python - nosetest输出中字符 `S`代表什么

python - docker-lambda sqlalchemy选择,无结果

python - Mysqlclient 需要 MS Visual C++ 10.0,它又需要 .Net Framework 4

javascript - 如何使用 Django 控制循环

django - 在 Django 中,当登录用户提交表单时,如何自动将用户名添加到模型中

python - Django Rest Framework,关系 POST 选项名称

python - 对于 django social_auth 中的类型字符 varying(16),DataError 值太长

python - 狮身人面像 : Link to a method of a class in another module in Python docstring

python - 对象没有属性_set',Django

python - 在 models.py : Django rest framwork 中导入序列化器