我在这里对Django很新,我需要帮助获取此“表单”以获取当前登录用户的用户ID。
这是我的forms.py:
from django import forms
from models import Entry
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ('title', 'body', 'thumbnail')
我找不到有关此类表单实现的任何文档,特别是“fields”变量的工作方式。
我可以通过添加这样的作者来实现这一点:
fields = ('title', 'body', 'thumbnail', 'author')
这几乎是我所需要的,除了这只会添加每个注册用户的下拉列表。
如何在Django中做这样的事情?
from django import forms
from models import Entry
from django.contrib.auth.models import User
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ('title', 'body', 'thumbnail')
fields.author = request.user.username # <-- SEEMS TO NOT DO ANYTHING
或者不是那样,我怎么能把它编码到views.py?
def create(request):
if request.POST:
form = EntryForm(request.POST, request.FILES)
if form.is_valid():
form.author = request.user.id # <-- SEEMS TO NOT DO ANYTHING
form.save()
return HttpResponseRedirect('/weblog')
else:
form = EntryForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('coltrane/newpost.html', args)
答案 0 :(得分:2)
您需要在实例上设置作者,这是form.save()的结果,而不是在表单上。
if form.is_valid():
obj = form.save(commit=False)
obj.author = request.user
obj.save()
请注意,您的第一次尝试会产生NameError异常(因为在该范围内未定义request
)。
答案 1 :(得分:-1)
您可以在视图中使用request.user而不是request.user.username或request.user.id
form.author = request.user