【发布时间】:2017-08-12 10:10:21
【问题描述】:
models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=32)
class Article(models.Model):
author = models.ForeignKey(Author, on_delete=models.SET_NULL, null=True)
content = models.TextField()
forms.py
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['content']
在我的 Web 应用程序中,作者登录并写了一篇文章。所以很明显,当作者看到一个 ArticleForm 时,他/她不需要在 ArticleForm 中填写作者字段,因为应用程序已经通过使用会话变量知道作者是谁。
这是我尝试添加作者的方式:
views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from .models import Article
from .forms import ArticleForm
@login_required
def new_article(request):
author_name = request.session['author_name']
author = Author.objects.get(name=author_name)
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
form.save(commit=False)
form.author = author # I suspect the mistake is here
# I also tried form.author = author.id
form.save()
return redirect('success')
else:
form = ArticleForm()
return render(request, 'writings/new_article.html', {'form': form})
查看数据库表时,author_id 列始终为NULL。我的方法有什么问题?如何在保存 ModelForm 之前添加模型关系?
【问题讨论】:
标签: django django-models django-forms