【发布时间】:2019-08-06 14:06:25
【问题描述】:
如何更改特定记录中的字段自动影响其他记录上的相同字段?
考虑以下模型:
class AccountUser(models.Model):
ADMIN='A'
USER='U'
USER_PROFILES = (
(ADMIN, 'Admin'),
(USER, 'User'),
)
account = models.ForeignKey(Account, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
profile = models.CharField(max_length=1,choices=USER_PROFILES,default=USER)
current_account = models.BooleanField(default=True)
def __str__(self):
return format('{} ({})'.format(self.account.name, self.user.username))
这是用户和帐户之间的多对多关系,因此用户可以在多个帐户中但每个用户只能拥有一个且只有一个当前帐户。然后,每次使用 current_account = True 创建或更新新记录时,都应使用 current_account = False 更新来自同一用户的任何其他记录。
我在Actions triggered by field change in Django 看到了类似的问题,但它是针对same 记录的更改。
【问题讨论】:
-
要么覆盖
AccountUser模型的save()方法,要么使用post_save()信号处理程序。
标签: django django-models