Python 在django中处理来自多个模型的多个外键
我的教区居民模型如下(仅粘贴相关代码) 教区居民可以有Python 在django中处理来自多个模型的多个外键,python,python-3.x,django,django-models,django-rest-framework,Python,Python 3.x,Django,Django Models,Django Rest Framework,我的教区居民模型如下(仅粘贴相关代码) 教区居民可以有一个家庭和一个角色 所以我正试图在我的家庭连载程序中实现这一点 class FamilySerializer(serializers.ModelSerializer): members = serializers.PrimaryKeyRelatedField( many=True, queryset=Parishioner.objects.all(), allow_null=True,
一个家庭
和一个角色
所以我正试图在我的家庭连载程序中实现这一点
class FamilySerializer(serializers.ModelSerializer):
members = serializers.PrimaryKeyRelatedField(
many=True,
queryset=Parishioner.objects.all(),
allow_null=True,
required=False
)
role = serializers.PrimaryKeyRelatedField(
many=True,
queryset=FamilyRole.objects.all(),
allow_null=True,
required=False
)
class Meta:
model = Family
fields = ('id', 'name', 'address', 'monthly_contribution', 'members', 'role', 'enabled')
read_only_fields = ('id',)
depth = 1
基本上,我想做的是,当我添加家庭时,我可以将成员(教区居民)添加到该家庭中,并为每个成员分配一个角色
我做错了什么?
因为当我加载我的api/family/
我在犯错误
'Family' object has no attribute 'role'
但您可以清楚地看到,我在我的教区居民模型中添加了相关的\u name='role'
那么我怎样才能实现我想要的呢
我想向家庭中添加成员(教区居民),并为该家庭中的每个成员分配角色
家庭的例子:父亲、母亲、儿子、女儿
我的前端将类似于我的CreateFamily页面(我希望只向服务器发送一个请求,通过使用api/Family/
endpoint来实现这一点)
您是否尝试过删除深度或将其设置为2?很明显,您的序列化程序中有一个字段
角色
,我猜Django没有识别它,因为有深度
选项
然后你会问我为什么它会识别字段
成员
?不是,这没有引起错误,因为您的Parishoner
模型中有一个相关的_名称家族
。您的帖子中有几个问题
class Parishioner(models.Model):
family = models.ForeignKey(Family, null=True, on_delete=models.PROTECT, related_name='members')
role = models.ForeignKey(FamilyRole, null=True, blank=True, on_delete=models.PROTECT, related_name='role')
因此,Partishioner
有一个角色
列
class FamilySerializer(serializers.ModelSerializer):
class Meta:
model = Family
fields = ('id', 'name', 'address', 'monthly_contribution', 'members', 'role', 'enabled')
在序列化程序中,您尝试访问系列
的角色
'Family' object has no attribute 'role'
我猜您的
家庭
模型没有角色
栏,但教区居民
有。您的教区居民
模型中有相关的成员,很抱歉拼写错误是的,我尝试删除/更改深度,是的成员没有提出错误。我所要做的就是向家庭中添加成员(教区居民),并为家庭中的每个成员分配角色。是的,这就是问题所在。那么我怎样才能实现我想要的呢?基本上,在创建族时,我希望为族中的每个成员分配成员和角色
'Family' object has no attribute 'role'