Недавно я начал использовать Django, и я пытаюсь использовать его в качестве инструмента управления конфигурацией для более старого приложения, которое я написал. Итак, я создал приложение в моем проекте Django с именем конфигураций.Как добавить created_by и updated_by пользователя в model.py с помощью внешних ключей в Django 1.7?
Для того, чтобы полностью ответить на мой вопрос выше, есть 2 части вопроса.
Я хочу добавить в проект файл models.py
класс для хранения всех значений конфигурации. Кроме того, я хочу сохранить идентификатор пользователя, который добавляет новую запись или обновляет запись как created_by
и updated_by
. Мне сказали, что кто-то, чтобы сделать следующее:
«Вы должны установить несколько иностранных ключевых полей в модели (например, создание и обновления), который, как ссылка на auth.user
Затем возьмите request.user
в нужное время и сделать <model>.created = request.user
. и <model>.updated = request.user
перед сохранением. "
- Как правильно добавить два внешних ключа к моей модели?
Я попытался завершить 1-й шаг, он сказал мне, чтобы закончить, которая заключается в создании внешнего ключа поля в моем 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 непосредственно перед экономия?
смотрит на это http://stackoverflow.com/a/1142473/2169114. Это ваше дело. –