저는 django를 처음 사용하기 때문에 다른 클래스로 사용자 모델을 확장하려고합니다. 그러나, 클래스 Device와 함께 제대로 작동하는 양식을 얻는 방법을 모르겠습니다. 온도와 배터리가 형태로 나타나기를 바랍니다.보기에서 django 폼을 렌더링
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
'if if form.is_valid()'여야합니다. 괄호를 잊어 버리고'if form.is_valid'라고 쓰면'form.is_valid'는 * 항상 *로 평가됩니다. 팁을 주신 덕분에 – Alasdair
! 참으로 변화를 일으킬 것입니다. :) – Rose