Pyd*_* UA 5 python django django-signals django-models
假设我有这样的模型
class Event(models.Model)
users_count = models.IntegerField(default=0)
users = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)
如果事件添加/删除某些用户,您会如何建议更新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')
Run Code Online (Sandbox Code Playgroud)
并处理发送的pre_save信号Participation以更新instance.event计数.它将显着简化m2m的处理.在大多数情况下,后来发现一些逻辑和数据最适合中间模型.如果不是这种情况,请尝试自定义解决方案(无论如何,您不应该有很多代码路径将用户添加到事件中).
| 归档时间: |
|
| 查看次数: |
4024 次 |
| 最近记录: |