将 View 中的 django.contrib.auth.models 中的用户对象分配给具有指向用户的外键引用的模型对象的正确方法是什么?示例 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))
“new_contact.user = request.user”抛出错误 ValueError at/Cannot assign "": "Contact.user"must be a "User"instance because request.user is an object wrapper, not the actual User (which does '还存在)。但是如果我设置 new_contact.user = auth.get_user(request) [基于此处的答案:valueError in modelforms ],即使我将 django.contrib.auth 导入到我的 View 中,它也会返回 NameError 'auth'。这样做的正确方法是什么?谢谢
我的模型是:
from django import forms
from .models import Contact
class SignupForm(forms.ModelForm):
class Meta:
model = Contact
fields = ['name','email','company']
最佳答案
导入语句应该是:
from django.contrib.auth import get_user
以及对 get_user()
的实际调用:
new_contact.user = get_user(request)
仅供引用,引用自 django.contrib.auth
source :
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.
"""
...
希望对您有所帮助。
关于python - 无法分配 django.utils.functional.SimpleLazyObject,必须是用户实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22769081/