如何在Django 1.7中通过外键将created_by和updated_by用户添加到model.py?

时间:2014-09-16 19:22:52

标签: django django-models django-users

我最近开始使用Django,我正在尝试将它用作我编写的旧应用程序的配置管理工具。所以,我在我的Django项目中创建了一个名为 configurations 的应用程序。

为了完全回答上述问题,问题分为两部分。

我想在项目的models.py文件中添加一个类来存储所有配置值。另外,我想存储添加新记录的用户ID或将记录更新为created_byupdated_by。有人告诉我做以下事情:

“您需要在模型中建立一些外键字段(例如创建和更新),这两个字段都链接到auth.user。然后在适当的时间抓住request.user并执行{{1}和保存之前的<model>.created = request.user。“

  1. 如何正确地将两个外键添加到我的模型中?
  2. 我尝试完成他告诉我要完成的第一步,即在我的<model>.updated = request.user文件中创建分配给models.pycreated_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?

1 个答案:

答案 0 :(得分:7)

Django创建了一个从用户回到模型的反向关系。在你的情况下,两个关系都有相同的反向关系

更改这样的代码:

updated_by=models.ForeignKey(User, related_name='updated_by_user')
created_by=models.ForeignKey(User, related_name='created_by_user')