【发布时间】:2021-02-02 12:49:02
【问题描述】:
我正在尝试使用 createview 在我的模型中创建一个新条目。模型 Venue 与 Adress 模型有单调关系,我无法让它更新该模型。我尝试使用自定义表单,但总是收到以下错误:
IntegrityError at /evcreate/
NOT NULL constraint failed: kammem_person.padress_id
form.py:
class AdressForm(ModelForm):
street=CharField(max_length=100)
snumb=CharField(max_length=15)
town=CharField(max_length=100)
postn=CharField(max_length=5,validators=[postnvali])
class Meta:
model=Person
exclude=['padress']
查看:
class EvCreate(CreateView):
form_class=AdressForm
template_name='kammem/create.html'
success_url=reverse_lazy('event')
def form_valid(self,form):
street=form.cleaned_data['street']
snumb=form.cleaned_data['snumb']
town=form.cleaned_data['street']
postn=form.cleaned_data['postn']
form.vadress=Adress.objects.create(street=street,snumb=snumb,town=town,postn=postn)
return super().form_valid(form)
models.py
class Person(Model):
fname=CharField(default="missing",max_length=100)
lname=CharField(default="missing",max_length=100)
mobil=PhoneField(default='9999999999')
mail=EmailField(default='contact@gmail.com')
padress=OneToOneField(Adress,on_delete=CASCADE,primary_key=True)
def __str__(self):
return self.fname
class Meta:
ordering=('fname','lname')
class Venue(Model):
vname=CharField(default="",max_length=100)
vamil=EmailField(default='contact@gmail.com')
vpage=CharField(default='homepage',max_length=100)
vadress=OneToOneField(Adress,on_delete=CASCADE,,primary_key=True)
def __str__(self):
return 'Venue: ' + self.vname
url.py
path('evcreate/',EvCreate.as_view(),name='evcreate'),
我真的在寻找答案,但没有成功。有什么线索吗?
【问题讨论】:
-
form.vadress=你的意思是写form.instance.padress=(在你的form_valid类EvCreate的方法中)?此外,AddressForm 这个名称非常具有误导性,因为它是一种创建 Person 实例的表单 -
这个名字有误导性,真的。是的,我的意思是 form.instance.padress=
标签: python django model relation