"""The user model is the default model of django"""
class UserProfile(models.Model):
# user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
# !!!!!!!!!---here OneToOne Field--!!!!!!!!!!
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
description = RichTextField(max_length=140, default='')
avatar = models.CharField(max_length=50, default=_random_avatar, null=True)
home_url = models.URLField(blank=True, null=True)
github_url = models.URLField(blank=True, null=True)
linkedin_url = models.URLField(blank=True, null=True)
stackoverflow_flair = RichTextField(blank=True, null=True)
is_user = models.BooleanField(default=False)
is_public = models.BooleanField(default=False)
class ProfileForm(ModelForm):
class Meta:
model = UserProfile
fields = '__all__'
@login_required
def index(request):
""" Notice, the profile.html is composited by 2 sections, user and profile
So, setter and getter all are 2 group, too
"""
info = None
if request.user.is_authenticated:
user = request.user
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
# link to user
form.user = user
form.save() # <------here, can't save the user_id, why?
else:
form = ProfileForm()
# here, queryset allways is null <-------
profile = UserProfile.objects.filter(user_id=user.id)
return render(request, 'account/profile.html', {'user': user, 'profile': profile, 'form': form} )
else:
return redirect( reverse('account_login') )
我尝试在表单视图中填写配置文件信息,然后保存,但我可以在表格配置文件中获取新记录,但 user_id 为空。我不知道为什么。
答案 0 :(得分:0)
因为表单没有user
属性。它应该是:
if form.is_valid():
obj = form.save(commit=False)
obj.user = user
obj.save()