【发布时间】: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' clashes 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' clashes 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?
【问题讨论】:
-
看看这个stackoverflow.com/a/1142473/2169114。这是你的情况。
标签: django django-models django-users