我最近开始使用Django,我正在尝试将它用作我编写的旧应用程序的配置管理工具。所以,我在我的Django项目中创建了一个名为 configurations 的应用程序。
为了完全回答上述问题,问题分为两部分。
我想在项目的models.py
文件中添加一个类来存储所有配置值。另外,我想存储添加新记录的用户ID或将记录更新为created_by
和updated_by
。有人告诉我做以下事情:
“您需要在模型中建立一些外键字段(例如创建和更新),这两个字段都链接到auth.user
。然后在适当的时间抓住request.user
并执行{{1}和保存之前的<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"
第2部分 如何在适当的时候获取request.user并在保存之前执行.created = request.user和.updated = request.user?
答案 0 :(得分:7)
Django创建了一个从用户回到模型的反向关系。在你的情况下,两个关系都有相同的反向关系
更改这样的代码:
updated_by=models.ForeignKey(User, related_name='updated_by_user')
created_by=models.ForeignKey(User, related_name='created_by_user')