2016-05-03 14 views
1

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> 

Antwort

1

Versuchen einen der folgenden Schritte:

if author_form.is_valid(): 
    article = author_form.save(commit=False) 
    article.article_author = user 
    # article.article_author_id = user.id #w ill work as well 
    article.save() 
else: 
    return redirect('/') 

oder in Form Instanziierung:

initial={'article_author_id': user.id} 
Verwandte Themen