Skip to main content
 首页 » 编程设计

python之django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist 通过测试 django 形式

2025年02月15日38lori

我有以下模型:

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')