Chr*_* B. 4 python django django-forms django-views
在视图中将django.contrib.auth.models中的User对象分配给具有对User的外键引用的模型对象的正确方法是什么?示例中的new_contact:
def index(request):
form = SignupForm(request.POST or None)
if form.is_valid():
new_contact = form.save(commit=False)
new_contact.user = request.user
new_contact.save()
# send_mail ...
return HttpResponseRedirect(reverse('app:template'))
else:
return render_to_response('index.html', {'form': form}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
"new_contact.user = request.user"抛出错误ValueError at/Can not assign"":"Contact.user"必须是"User"实例,因为request.user是一个对象包装器,而不是实际的User(不存在)然而).但是如果我设置new_contact.user = auth.get_user(request)[基于这里的答案:modelforms中的valueError ],它会返回NameError'autah',即使我将django.contrib.auth导入到我的视图中.这样做的正确方法是什么?谢谢
我的模型是:
from django import forms
from .models import Contact
class SignupForm(forms.ModelForm):
class Meta:
model = Contact
fields = ['name','email','company']
Run Code Online (Sandbox Code Playgroud)
import语句应该是:
from django.contrib.auth import get_user
Run Code Online (Sandbox Code Playgroud)
并实际呼吁get_user():
new_contact.user = get_user(request)
Run Code Online (Sandbox Code Playgroud)
仅供参考,django.contrib.auth 来源:
def get_user(request):
"""
Returns the user model instance associated with the given request session.
If no user is retrieved an instance of `AnonymousUser` is returned.
"""
...
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |