我有一位用户,他将创建公司资料。用户是由django的django.contrib.auth.models创建的。所以问题是将当前登录的用户分配给公司简介的用户。 我的models.py是:
class Company_Profile(models.Model):
user = models.ForeignKey(User)
logo = models.ImageField(_('Company Logo'), upload_to='image', null=True, blank=True)
address = models.TextField(_('Contact Address'), max_length=50)
phone_no = models.IntegerField(_('Contact No'), max_length=12)
我的forms.py是:
class Company_Prof(forms.ModelForm):
class Meta:
model = Company_Profile
fields = ('logo','address','phone_no')
我对公司简介的看法是:
@login_required()
def company_prof(request):
if request.method == 'POST':
comp_prof = Company_Prof(request.POST or None)
comp_prof.user = User.objects.get(username=request.user)
if comp_prof.is_valid():
save_prof = comp_prof.save(commit=False)
save_prof.save()
messages.success(request, 'Thank you for Registration')
return HttpResponseRedirect('company/'+str(save_prof.id))
else:
comp_prof =Company_Prof()
variables = RequestContext(request, {
'comp_form': Company_Prof()})
return render_to_response("comp_profile.html",
locals(),
context_instance = RequestContext(request))
请帮帮我..
答案 0 :(得分:2)
comp_prof.user = User.objects.get(username=request.user)
不正确的。 request.user
is already a User
.
comp_prof.user = request.user
答案 1 :(得分:1)
两件事:一,使用commit = False保存对象将创建对象,但是在调用commit = True之前不会将其提交到数据库。因此,您的对象可以在这两行之间进行修改。
二:您的请求中的当前用户对象可用作“用户”。调用request.user将返回用户对象。
因此,对于您的情况,您需要在再次调用save之前分配用户对象,如下所示:
save_prof = comp_prof.save(commit=False)
save_prof.user = request.user
save_prof.save()