我有以下模型:
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
或self.kind
在你的 clean
方法中。
def clean(self):
if self.region_id is not None self.kind_id is not None and self.region not in self.kind.regions.all():
raise ValidationError('not possible')
关于python - django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist 通过测试 django 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45671954/