Как добавить поле ForeignKey для сохранения в ModelForm Django?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить поле ForeignKey для сохранения в ModelForm Django?

Сообщение Anonymous »

При создании веб-сайта я столкнулся со следующей проблемой: пользователь может добавить статью, поэтому в модели статьи есть поле ForeignKeyавтор.
Я создал форму для ее добавления, унаследованную от ModelForm, так как считаю, что так логичнее (так как она напрямую взаимодействует с БД). Проблема в том, что я не могу добавить это поле в Форму, так как оно не может быть заполнено; его нужно взять из самого запроса.
author = request.user.pk

Так как же мне сделать так, чтобы форма также сохраняла идентификатор автора? Без него возникает ошибка: NOT NULL CONSTRAINT FAILED, что логично, поскольку форма не сохраняет pk и поэтому имеет значение null; но FOREIGN KEY не может быть нулевым.
Единственный способ — наследовать его от класса Form? Мне не очень хочется этого делать... Я подумывал о 'переопределении' метода save(), чтобы у него был еще один аргумент - идентификатор автора:form.save(author=request.user.pk)

Вот так и будет. Но я передумал, потому что если что-то пойдет не так, это испортит всю базу данных... Метод save() слишком глобальный. Более того, вполне возможно, что есть другой способ решения моей проблемы, более эффективный и понятный.
Вот код моей формы:
class ArticleForm(ModelForm):
class Meta:
model = Article
fields = ['title', 'content']
widgets = {'title' : TextInput(attrs={'class' : 'create_article_title',
'placeholder' : 'Введите заголовок...' }),
'content' : Textarea(attrs={'class' : 'create_article_content',
'placeholder' : 'Ваша будущая статья...' })}

и моя модель:
class Article(Model):
title = CharField(max_length=30)
content = CharField(max_length=5000)
author = ForeignKey(User, on_delete=CASCADE)
rating = IntegerField(default=0)
created = DateField(auto_now_add=True)
last_updated = DateField(auto_now_add=True)

articles = ArticleManager()
objects = Manager()


Подробнее здесь: https://stackoverflow.com/questions/786 ... orm-django
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как добавить поле ForeignKey для сохранения в ModelForm Django?
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как добавить поле ForeignKey для сохранения в ModelForm Django?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Как добавить поле ForeignKey для сохранения в ModelForm Django?
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Обработка форм Django – как создать запись и добавить ее как ForeignKey
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Добавить кнопку из панели администратора в ModelForm в Django
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»