我是django的新手,我想用另一个类来扩展用户模型。但是,我不确定如何让表单与类设备正常工作。我想要温度,并在表格中显示电池。谢谢提前:)在视图中呈现django窗体
models.py非常
class Device(models.Model):
temperature = models.IntegerField()
battery = models.IntegerField()
class UserProfile(models.Model):
user = models.OneToOneField(User)
deviceNb= models.CharField(max_length=50)
device = models.OneToOneField(Device, null=True)
User.profile = property(lambda u : UserProfile.objects.get_or_create(user=u)[0])
forms.py
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('deviceNb', 'device',)
views.py
def user_profile(request):
if request.method == 'POST':
form = UserProfileForm(request.POST, instance=request.user.profile)
if form.is_valid:
form.save()
#to go back to check that the info has changed
return HttpResponseRedirect('/accounts/loggedin')
else: # when this is a get request
user = request.user
profile = user.profile
form = UserProfileForm(instance=profile)
args = {}
args.update(csrf(request))
args['form'] = form
return render(request, 'profile.html', args)
内联窗体集是答案。从文档:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets – ivan7707
注意它应该'如果form.is_valid()'。如果你忘记括号并写入'if form.is_valid',那么'form.is_valid'将总是*评估为True。 – Alasdair
感谢您的提示!确实会做出改变。 :) – Rose