Django Rest框架不断返回嵌套关系的错误 [英] Django Rest framework keeps returning error on nested relationship
问题描述
这是我不断得到的错误:
/onderhoudapi/conditiedeel/.json中的AttributeError在尝试获取字段值
gebreken >时获得AttributeError
code>在序列化器
ConditiedeelSerializer
。序列化器字段可能不正确地命名为
,并且不符合Conditiedeel
实例上的任何属性或键。原始异常文本是:'Conditiedeel'对象没有
属性'gebreken'。
serializers.py
class GebrekSerializer(serializers.ModelSerializer):
class Meta:
model = Gebrek
fields =(' $ a
class ConditiedeelSerializer(serializers.ModelSerializer):
gebreken = GebrekSerializer(many = True ,read_only = True)
class Meta:
model = Conditiedeel
fields =('deel','conditionaliescore','gebreken')
models.py
class Conditiedeel(models.Model):
deel = models.OneToOneField(Deel,null = True,blank = True)
conditioniegroep = models.ForeignKey(Conditiegroep)
conditionaliescore = models.IntegerField = CONDITIE_KEUZES)
#some这里的类方法
class Gebrek(models.Model):
naam = models.CharField(max_length = 80)
omvang = models.IntegerField(choices = OMVANG_KEUZES )
intensiteit = models.IntegerField(choices = INTENSITEIT_KEUZES)
conditionaliedeel = models.ForeignKey(Conditiedeel)
nengebrek = models.ForeignKey(Nengebrek)
#class方法这里
如您所见, Gebrek
课程与Conditiedeel课程有外交关系。这意味着我可以使用像 here 这样的嵌套关系。我认为我紧紧关注了这个例子,但我无法让它工作。
这里的问题是 Conditiedeel
模型没有一个名为 gebreken
的属性,请记住,您正在尝试获取向后关系对象,因此您需要使用 gebreken_set
作为django的字段 docs 说。所以你的串行器应该是
class ConditiedeelSerializer(serializers.ModelSerializer):
gebrek_set = GebrekSerializer(many = True,read_only = true)
class Meta:
model = Conditiedeel
fields =('deel','conditionaliescore','gebrek_set',)
Staring at my code for quite a while and I keep running into the same error. Funny thing is that I made a similar set of serializers for another part of my model and those work fine.
This is the error that I keep getting:
AttributeError at /onderhoudapi/conditiedeel/.json Got AttributeError when attempting to get a value for field
gebreken
on serializerConditiedeelSerializer
. The serializer field might be named incorrectly and not match any attribute or key on theConditiedeel
instance. Original exception text was: 'Conditiedeel' object has no attribute 'gebreken'.
serializers.py
class GebrekSerializer(serializers.ModelSerializer):
class Meta:
model = Gebrek
fields = ('naam', 'get_type', 'get_omvang_waarde', 'get_intensiteit_waarde', 'get_ernst_waarde')
class ConditiedeelSerializer(serializers.ModelSerializer):
gebreken = GebrekSerializer(many=True, read_only=True)
class Meta:
model = Conditiedeel
fields = ('deel', 'conditiescore', 'gebreken', )
models.py
class Conditiedeel(models.Model):
deel = models.OneToOneField(Deel, null=True, blank=True)
conditiegroep = models.ForeignKey(Conditiegroep)
conditiescore = models.IntegerField(choices=CONDITIE_KEUZES)
#some class methods here
class Gebrek(models.Model):
naam = models.CharField(max_length=80)
omvang = models.IntegerField(choices=OMVANG_KEUZES)
intensiteit = models.IntegerField(choices=INTENSITEIT_KEUZES)
conditiedeel = models.ForeignKey(Conditiedeel)
nengebrek = models.ForeignKey(Nengebrek)
#class methods here
As you can see, the Gebrek
class has a foreign relationship to the Conditiedeel class. That should mean I can use a nested relationship like here. I think I followed the example closely, yet I cannot get it to work.
The problem here is that Conditiedeel
model has not an attribute called gebreken
, remember that you are trying to get backwards relationship objects, so you need to use gebreken_set
as field as django docs says. So your serializer should be
class ConditiedeelSerializer(serializers.ModelSerializer):
gebrek_set = GebrekSerializer(many=True, read_only=True)
class Meta:
model = Conditiedeel
fields = ('deel', 'conditiescore', 'gebrek_set', )
这篇关于Django Rest框架不断返回嵌套关系的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!