Ich versuche, ein ForeignKey-Feld eines Modells in Django-Form zu aktualisieren. Ich möchte, dass ein Benutzer seinen Namen nicht in ein Eingabefeld als Autor des Artikels schreibt, den er geschrieben hat, aber sein id
muss in dem Feld in Article
Modell gespeichert werden. In meiner HTML-Form zeige ich nur eine Schaltfläche mit ausgeblendeter Eingabe an. Aber in meiner views.py schreibe ich, dass das Formular user.id
nehmen und es in das Feld 'article_author'
setzen sollte.Nur ForeignKey-Feld in Django-Formular aktualisieren
Leider habe ich keine Aktualisierungen in der Tabelle. Was mache ich falsch?
mein Modell:
class Article(models.Model):
article_pub_date = models.DateField(default=None,null=True,verbose_name="Дата публикации")
article_title = models.CharField(max_length=70, verbose_name="Заголовок", null=True)
article_text = models.TextField(verbose_name="Текст", null=True)
article_author = models.ForeignKey(User, verbose_name='Автор', blank=True, null=True)
mein views.py
def article_detail(request, article_id):
user = request.user
article = get_object_or_404(Article, pk=article_id)
author_form = ArticleForm(request.POST or None, instance=article, initial={'article_author': user.id})
if author_form.is_valid():
author_form.save()
else:
return redirect('/')
mein forms.py
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ('article_author',)
widgets = {'article_author': forms.HiddenInput()}
und meine Vorlage:
<form method="POST" action="">
{% csrf_token %}
{{ author_form.as_p }}
<input type="submit" value="BIND" class="btn">
</form>