【发布时间】:2021-11-05 10:58:39
【问题描述】:
尝试将输入保存到模型时显示此错误无法分配“3380786777”:“Registration.nid”必须是“Nid”实例。 我在这个项目中使用 MySQL 数据库。尝试了几个小时来解决这个问题。已经在 Nid 表中插入的值和我尝试在注册表中插入的 Nid 确实存在于 Nid 表中。
这是我的模型:
class Nid(models.Model):
id = models.BigIntegerField(primary_key=True)
fname = models.CharField(db_column='FName', max_length=100, blank=True, null=True) # Field name made lowercase.
lname = models.CharField(db_column='LName', max_length=100, blank=True, null=True) # Field name made lowercase.
dob = models.DateField()
fathers_name = models.CharField(db_column='Fathers_Name', max_length=150, blank=True, null=True) # Field name made lowercase.
mothers_name = models.CharField(db_column='Mothers_Name', max_length=150, blank=True, null=True) # Field name made lowercase.
address = models.ForeignKey(Address, models.DO_NOTHING, db_column='Address_ID', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'nid'
class Registration(models.Model):
nid = models.OneToOneField(Nid, models.DO_NOTHING, db_column='NID', primary_key=True) #
Field name made lowercase.
date = models.DateTimeField(db_column='Date') # Field name made lowercase.
center = models.ForeignKey(Center, models.DO_NOTHING, db_column='Center_ID', blank=True,
null=True) # Field name made lowercase.
mobile_no = models.IntegerField(db_column='Mobile_No', blank=True, null=True) # Field
name made lowercase.
age = models.IntegerField(db_column='Age') # Field name made lowercase.
class Meta:
managed = False
db_table = 'registration'
unique_together = (('mobile_no', 'center'),)
Form:
class PostForm(forms.Form):
NID = forms.IntegerField()
Date_of_Birth =forms.DateField(widget=forms.SelectDateWidget(years=range(1921,2004)))
Phone_number = forms.IntegerField()
Center = forms.ChoiceField(choices=choice)
CAPTCHA = forms.CharField()
查看:
class RegistrationView(FormView):
template_name = "registration.html"
form_class = PostForm
success_url='/otp'
def form_valid(self, form):
search_term=form.cleaned_data['NID']
search_term2=form.cleaned_data['Date_of_Birth']
search_term3=form.cleaned_data['Phone_number']
search_term4=form.cleaned_data['Center']
valid = Nid.objects.filter(id=search_term)
new_object = Registration.objects.create(
nid = form.cleaned_data['NID'],
center = form.cleaned_data['Center'],
mobile_no = form.cleaned_data['Phone_number'],
age = 19
)
for objects in valid:
if valid and objects.dob == search_term2:
return super().form_valid(form)
else:
form.add_error('NID', 'You are not eligible')
return self.form_invalid(form)
忽略年龄值。
【问题讨论】:
标签: django django-models django-rest-framework django-views django-forms