1
我有以下模式:django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist通過測試django的形式
class Damage(models.Model):
kind = models.ForeignKey(Kind, on_delete=models.PROTECT)
region = models.ForeignKey(Region, on_delete=models.PROTECT)
def clean(self):
if self.region not in self.kind.regions.all():
raise ValidationError('not possible')
和相應的形式:
class DamageForm(forms.ModelForm):
class Meta:
model = Damage
fields = ['kind', 'region']
當我運行以下測試,我總是得到django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist: Damage has no region
失敗。
def test_empty_input(self):
data = {
'kind': None,
'region': None,
}
form = DamageForm(data)
self.assertFalse(form.is_valid())
def test_invalid_input(self):
data = {
'kind': self.test_kind,
'region': self.test_region,
}
form = DamageForm(data)
self.assertFalse(form.is_valid())
好吧,讓測試成功運行,'self.region_id不是None'是重要的部分。如果我不使用'self.kind_id'部分,它也可以成功運行。但是,如何在沒有這種補充的情況下創建它也可以工作的區域? – nicksheen
當你提交'data = {'kind':None,'region':self.test_region}'時,你需要檢查'self.kind_id不是None'來防止錯誤。我不明白你的問題,「我如何在沒有這個補充的情況下創建它也可以工作的區域」。 – Alasdair
是的,你完全正確,忘記它;) – nicksheen