【发布时间】:2021-07-01 12:34:15
【问题描述】:
我想在每个模型中都有审计列。但是,一旦两个模型具有相同的代码,我就会收到错误“(fields.E305) 'app.Model.created_on' 的反向查询名称与 'app.Model.created_on' 的反向查询名称冲突。
- created_on
- created_by
- updated_on
- updated_by
例子
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 的方法。
【问题讨论】:
-
你为什么要做两个
class ModelBs?这似乎没有多大意义。 -
这更像是一个例子。假设我希望对任何模型进行的所有数据库更改都进行审计,我将为每个模型创建一个 created_on、created_by、updated_on 和 updated_by 字段。我还了解到,我可以简单地添加 related_name='+' 来防止创建反向。
标签: django django-models