models.py:Hata başka formun oluşturulmasını çağrılırken
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 bu kod çalışmaz.
country - This field is required. city - This field is required.
Kesinlikle yanlış burada bir şey yaptım, ama ben tam olarak ne bilmiyorum: dolayı bu hataları LocationForm kaydetmez. Forms.py'deki kodu, özellikle de RegistrationForm için kaydetme yöntemini karıştırdığımı itiraf ediyorum çünkü başka bir formun nasıl oluşturulduğunu ve bunların ikisi arasında nasıl bir bağlantı kuracağımı bilmiyorum. İnternette aradım ama bu konuda kesin bilgi bulamadım, bu yüzden doğaçlamaya çalıştım ama ne yazık ki başarısız oldum. Birisi bana yardım edebilir mi? Şimdiden teşekkürler!
GÜNCELLEME: views.py (şu anda):
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})
Ben de forms.py modifiye ettik ama hala yukarıdan hata var.
Öyleyse koddaki "else" kısmını buraya nasıl uyarlarım: http://pastebin.com/raw/qHRxcApG – MikiSoft
@MikiSoft sorunuzu güncelleyin veya kodu yorumda paylaşın, herhangi bir bağlantı paylaşmayın; onun tavsiye edilmez. – anand
Yeni bir satır olmadığında kodu bu yanıtta nasıl gönderebilirim? Bu yüzden onu Pastebin'de paylaştım, sizden açmamak saçma. – MikiSoft