Django TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;实例';
models.py:Django TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;实例';,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,models.py: from django.db import models from django.contrib.auth.models import User as BaseUser CHOICE_GENDER = ((1, 'Male'), (2, 'Female')) class Location(models.Model): city = models.CharField(max_length=75) country = models.CharField(ma
from django.db import models
from django.contrib.auth.models import User as BaseUser
CHOICE_GENDER = ((1, 'Male'), (2, 'Female'))
class Location(models.Model):
city = models.CharField(max_length=75)
country = models.CharField(max_length=25)
def __unicode__(self):
return ', '.join([self.city, self.state])
class Users(BaseUser):
user = models.OneToOneField(BaseUser, on_delete=models.CASCADE)
gender = models.IntegerField(choices=CHOICE_GENDER)
birth = models.DateField()
location = models.ForeignKey(Location)
class Meta:
ordering = ('user',)
forms.py:
from django.contrib.auth.forms import UserCreationForm
from django import forms
from .models import Users, Location, CHOICE_GENDER
class LocationForm(forms.ModelForm):
city = forms.CharField(max_length=75)
country = forms.CharField(max_length=25)
class Meta:
model = Location
fields = ('city', 'country',)
class RegistrationForm(UserCreationForm):
email = forms.CharField(max_length=75)
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
gender = forms.ChoiceField(choices=CHOICE_GENDER)
birth = forms.DateField()
location = LocationForm()
class Meta:
model = Users
fields = ('username', 'email', 'first_name', 'last_name', 'gender', 'birth', 'location')
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.gender = self.cleaned_data['gender']
user.birth = self.cleaned_data['birth']
user.location = self.cleaned_data['location']
if commit:
user.save()
return user
views.py:
from django.shortcuts import render, redirect
from django.forms import formset_factory
from . import forms
def signup(request):
if request.method == "POST":
loc_form = forms.LocationForm(request.POST)
if loc_form.is_valid():
loc = loc_form.save()
RegistrationFormSet = formset_factory(forms.RegistrationForm)
formset = RegistrationFormSet(request.POST, instance=loc)
if formset.is_valid():
formset.save()
return redirect('./')
# else:
# how to make to render the POST data to the template page and fill all fields?
return render(request, 'signup.html')
我从
formset=RegistrationFormSet(request.POST,instance=loc)
的标题中得到了错误。我试图创建一个有效的视图,在保存到主窗体之前调用另一个窗体,这就是为什么我使用FormSet,但我无法使它工作。有人能帮我吗?提前谢谢 RegistrationFormSet是通过调用formset_工厂创建的,因此它对实例一无所知。我想您的意思是使用,它确实支持它们。它需要指定参数“model”,那么在那里放什么呢?我试图将该行更改为RegistrationFormSet=inlineformset\u工厂(forms.RegistrationForm,model=Users)
,但它不起作用,它抛出了以下错误:“ModelFormOptions”对象没有属性“get\u parent\u list”
。谢谢你的帮助!