pit*_*408 0 django django-models django-users
我最近开始使用Django,我正在尝试将它用作我编写的旧应用程序的配置管理工具.所以,我在我的Django项目中创建了一个名为配置的应用程序.
为了完全回答我上面的问题,问题分为两部分.
我想models.py在项目中添加一个类来存储所有配置值.另外,我想存储,增加了一个新的记录或更新记录的用户ID 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"
Run Code Online (Sandbox Code Playgroud)
错误消息显示:
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
Run Code Online (Sandbox Code Playgroud)
第2部分如何在适当的时候获取request.user并在保存之前执行.created = request.user和.updated = request.user?
Django创建了一个从用户回到模型的反向关系.在你的情况下,两个关系都有相同的反向关系
像这样改变代码:
updated_by=models.ForeignKey(User, related_name='updated_by_user')
created_by=models.ForeignKey(User, related_name='created_by_user')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |