को सहेजता नहीं है मेरे पास मेरे उपयोगकर्ताओं के लिए मेरे ऐप पर प्रोफ़ाइल जोड़ने के लिए एक कस्टम पंजीकरण फ़ॉर्म है। हालांकि, हाल ही में एक बग पॉप अप हो गया है कि यह फॉर्म सभी क्षेत्रों में दी गई जानकारी को सहेज नहीं रहा है।कई से अधिक रिश्तों के साथ Django फॉर्म
मेरा उपयोगकर्ता मॉडल, MyUser
में अन्य मॉडल, Interest
के साथ कई सारे रिश्ते हैं, और यही वह समस्या है जहां समस्याएं उत्पन्न हो रही हैं। मुझे यकीन नहीं है कि यह RegistrationForm
है या register
देखें जो इसे उत्पन्न कर रहा है, इसलिए मैंने नीचे दोनों के साथ-साथ मॉडल कोड भी शामिल किया है। मेरे पास उपयोगकर्ताओं के प्रोफ़ाइल को अपडेट करने के लिए भी एक दृश्य है, इसे शामिल करने के बाद भी शामिल है, और यह बिल्कुल पूरी तरह से काम कर रहा है। यह personal
व्यू है। जैसा कि मैंने कहा है, यह केवल Interest
फ़ील्ड है जो वापस नहीं किया जा रहा है, भले ही इसे पंजीकरण पृष्ठ पर भर दिया जा रहा हो।
कोई भी मदद या सलाह बहुत सराहना की है, धन्यवाद।
models.py
class Interest(models.Model):
title = models.TextField()
def __unicode__(self):
return self.title
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
date_of_birth = models.DateField()
course = models.ForeignKey(Course, null=True)
location = models.ForeignKey(Location, null=True)
interests = models.ManyToManyField(Interest, null=True)
bio = models.TextField(blank=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['date_of_birth']
views.py
def register(request):
if request.method == 'POST':
form = RegistrationForm(data=request.POST)
if form.is_valid():
form.save()
return redirect('/friends/home/')
else:
form = RegistrationForm()
template = "adduser.html"
data = { 'form': form, }
return render_to_response(template, data, context_instance=RequestContext(request))
@login_required(login_url='/friends/login/')
def personal(request):
"""
Personal data of the user profile
"""
profile = request.user
if request.method == "POST":
form = ProfileForm(request.POST, instance=profile)
if form.is_valid():
form.save()
messages.add_message(request, messages.INFO, _("Your profile information has been updated successfully."))
return redirect('/friends/success/')
else:
form = ProfileForm(instance=profile)
template = "update_profile.html"
data = { 'section': 'personal', 'form': form, }
return render_to_response(template, data, context_instance=RequestContext(request))
forms.py
class RegistrationForm(forms.ModelForm):
"""
Form for registering a new account.
"""
email = forms.EmailField(widget=forms.TextInput, label="Email")
password1 = forms.CharField(widget=forms.PasswordInput,
label="Password")
password2 = forms.CharField(widget=forms.PasswordInput,
label="Password (again)")
course = forms.ModelChoiceField(queryset=Course.objects.order_by('title'))
location = forms.ModelChoiceField(queryset=Location.objects.order_by('location'))
class Meta:
model = MyUser
fields = [
'first_name',
'last_name',
'date_of_birth',
'email',
'password1',
'password2',
'course',
'location',
'interests',
'bio',
]
def __init__(self, *args, **kwargs):#Sort interests alphabetically
super(RegistrationForm, self).__init__(*args, **kwargs)
self.fields['interests'].queryset = Interest.objects.order_by('title')
def clean(self):
cleaned_data = super(RegistrationForm, self).clean()
if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError("Passwords don't match. Please enter again.")
return self.cleaned_data
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.set_password(self.cleaned_data['password1'])
if commit:
user.save()
return user
धन्यवाद। मैंने इस 'फीचर' पर 3 घंटे खो दिए। 'Save_m2m() के लिए –
फॉर्म पर है :) – cutteeth