有2个模型具有ForeignKey
关系,Profile
模型和Article
模型,我希望在profile.user
时将关联用户保存为Article
} object已创建。
以下代码出现的错误如下:
'NoneType'对象没有属性'user'
models.py :
class Profile(models.Model):
name = models.CharField(max_length=120)
user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, blank=True)
class Gig(models.Model):
profile = models.ForeignKey(Profile, null=True)
title = models.CharField(max_length=100, unique=True)
以下是我要保存profile.user
if request.method == 'POST':
form = GigForm(request.POST, request.FILES)
if form.is_valid():
save_it = form.save()
save_it.profile.user = request.user #error occured here.
save_it.save()
return redirect(reverse('own_gigs_details'))
else:
form = GigForm()
Forms.py
class GigForm(forms.ModelForm):
class Meta:
model = Gig
fields = ['title', 'image', 'body', 'price']
我做错了什么?
答案 0 :(得分:1)
当您首次通过保存表单创建Gig时,没有链接到它的配置文件(因为它未在您的表单中声明)。因此,您的错误发生是因为save_it.profile没有值。
我认为您正在尝试将Gig链接到登录用户的个人资料。为此,我认为您可以这样做
save_it.profile = request.user.profile
save_it.save()
而不是分配用户自己。
OneToOneField允许您在两个方向上引用对象。所以你可以做user.profile和profile.user。