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(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')
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']
if commit:
user.save()
return user
forms.pyでこのコードは動作しません。これらのエラーのため、LocationFormは保存されません。
country - This field is required. city - This field is required.
ここでは間違いがありましたが、どういうことがわかりません。私はform.pyのコードを混乱させてしまったことは認めています。特に、別のフォームの作成を正しく呼び出す方法と、2つのフォーム間の接続を行う方法がわからないため、RegistrationFormのsaveメソッドで特にそうです。私はインターネットを検索しましたが、正確な情報は見つかりませんでしたので、即興化しようとしましたが、残念ながら失敗しました。 誰かが私にこれを手伝ってもらえますか?前もって感謝します!
UPDATE:views.py(現在):
def signup(request):
if request.method == "POST":
reg_form = RegistrationForm(request.POST)
loc_form = LocationForm(request.POST)
if reg_form.is_valid() and loc_form.is_valid():
location = loc_form.save()
reg_form.cleaned_data['location_id'] = location.id
registration = reg_form.save()
else:
pass
else:
reg_form = RegistrationForm()
loc_form = LocationForm()
return render(request, 'signup.html', {'loc_form': loc_form, 'reg_form':reg_form})
私もforms.pyを変更したが、私はまだ上からエラーを得ました。
ここでコード内の "else"部分をどのように変更すればいいですか?http://pastebin.com/raw/qHRxcApG – MikiSoft
@MikiSoftは親切に質問を更新したり、コメント内のコードを共有したり、リンクを共有したりしません。それは知らされていません。 – anand
新しい返信がない場合、この返信にコードを投稿するにはどうすればよいですか?そういうわけで私はペーストビンでそれを共有しました。あなたがそれを開けないのは不合理です。 – MikiSoft