如何在 Django 1.7 中通过外键将 created_by 和 updated_by 用户添加到 model.py? [复制]
Posted
技术标签:
【中文标题】如何在 Django 1.7 中通过外键将 created_by 和 updated_by 用户添加到 model.py? [复制]【英文标题】:How to add created_by and updated_by user to model.py by Foreign Keys in Django 1.7? [duplicate] 【发布时间】:2014-11-10 16:16:35 【问题描述】:我最近开始使用 Django,并尝试将它用作我编写的旧应用程序的配置管理工具。因此,我在我的 Django 项目中创建了一个名为 configurations 的应用程序。
为了完全回答我上面的问题,问题分为两部分。
我想在项目的models.py
文件中添加一个类来存储所有配置值。另外,我想将添加新记录或更新记录的用户标识存储为created_by
和updated_by
。有人告诉我要执行以下操作:
“你需要在你的模型中建立几个外键字段(例如创建和更新),它们都链接到auth.user
。然后在适当的时候抓住request.user
并做<model>.created = request.user
和<model>.updated = request.user
保存之前。”
-
如何正确地将两个外键添加到我的模型中?
我尝试完成他告诉我完成的第一步,即在我的models.py
文件中创建外键字段,这些字段分配给created_by
和updated_by
。但是当我尝试下面的代码时,我得到了一个错误。
from django.db import models
from django.contrib.auth.models import User
class GeneralConfiguration(models.Model):
updated_by=models.ForeignKey(User)
created_by=models.ForeignKey(User)
created_timestamp=models.DateTimeField(auto_now_add=True, auto_now=False)
updated_timestamp=models.DateTimeField(auto_now_add=True, auto_now=False)
def __unicode__(self):
return "General Configuration"
错误信息显示:
jython manage.py makemigrations
←[31;1mCommandError: System check identified some issues:
ERRORS:
←[31;1mconfigurations.GeneralConfiguration.created_by: (fields.E304) Reverse acc
essor for 'GeneralConfiguration.created_by' ***es with reverse accessor for 'G
eneralConfiguration.updated_by'.
HINT: Add or change a related_name argument to the definition for 'Gener
alConfiguration.created_by' or 'GeneralConfiguration.updated_by'.←[0m
←[31;1mconfigurations.GeneralConfiguration.updated_by: (fields.E304) Reverse acc
essor for 'GeneralConfiguration.updated_by' ***es with reverse accessor for 'G
eneralConfiguration.created_by'.
HINT: Add or change a related_name argument to the definition for 'Gener
alConfiguration.updated_by' or 'GeneralConfiguration.created_by'.←[0m
←[0m
第 2 部分 如何在适当的时间获取 request.user 并在保存之前执行 .created = request.user 和 .updated = request.user?
【问题讨论】:
看看这个***.com/a/1142473/2169114。这是你的情况。 【参考方案1】:Django 创建从用户到模型的反向关系。在您的情况下,两种关系具有相同的反向关系
像这样更改代码:
updated_by=models.ForeignKey(User, related_name='updated_by_user')
created_by=models.ForeignKey(User, related_name='created_by_user')
【讨论】:
这似乎可以编译,你能解释一下为什么这行得通而其他语法不起作用吗? 这就是原因***.com/a/2642645/3802821以上是关于如何在 Django 1.7 中通过外键将 created_by 和 updated_by 用户添加到 model.py? [复制]的主要内容,如果未能解决你的问题,请参考以下文章