我希望在每个模型中都有审计列。然而,一旦两个模型有相同的代码,我就会得到一个错误"(fields.E305(反向查询"app"的名称。Model.created_on与应用程序的反向查询名称冲突。型号.created_on'.
- created_on
- 创建者
- 更新日期
- 更新者
示例
class ModelB(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='created_by',
on_delete=models.CASCADE)
updated_on = models.DateTimeField(auto_now=True)
updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='updated_by', on_delete=models.CASCADE)
class ModelB(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='created_by',
on_delete=models.CASCADE)
updated_on = models.DateTimeField(auto_now=True)
updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='updated_by', on_delete=models.CASCADE)
我并不真的需要每个用户都有一个反向键,但如果需要的话,我想要一种能够查找user_id的方法。
我用以下方法解决了这个问题。
created_on = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='created_by_%(class)s_related', on_delete=models.CASCADE)
updated_on = models.DateTimeField(auto_now=True)
updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='updated_by_%(class)s_related', on_delete=models.CASCADE)
引用抽象Django类中的多个外键字段