我想在PUT和GET中获取外键值,但在使用many=True
时我收到错误TypeError object is not iterable
。
以下是我的片段。
我有两个名为 MasterStatus 和 MasterType 的模型。在MasterType中,我有 MasterStatus 的外键值。
models.py
class MasterType(models.Model):
id = models.BigIntegerField(primary_key=True)
type_name = models.CharField(max_length=255, blank=True, null=True)
fk_status = models.ForeignKey(MasterStatus)
def __unicode__(self):
return u'%s' % (self.type_name)
class Meta:
managed = False
db_table = 'master_type'
在序列化程序中,我使用many=True
来获取foreignkey的嵌套值。这里我使用了PrimaryKeyRelatedField序列化程序。
serializer.py
class MasterTypeSerializer(serializers.HyperlinkedModelSerializer):
fk_status = serializers.PrimaryKeyRelatedField(queryset=MasterStatus.objects.all(),many=True)
class Meta:
model = MasterType
fields = ('id', 'type_name', 'fk_status', 'last_modified_date', 'last_modified_by')
depth = 2
答案 0 :(得分:0)
ForeignKey
链接到单个MasterStatus实例,因此它并不多。
您的序列化程序应如下所示:
class MasterTypeSerializer(serializers.HyperlinkedModelSerializer):
fk_status = serializers.PrimaryKeyRelatedField(
queryset=MasterStatus.objects.all())
class Meta:
model = MasterRepaymentType
class MasterStatusSerializer(serializers.HyperlinkedModelSerializer):
fk_type = serializers.PrimaryKeyRelatedField(
queryset= MasterRepaymentType.objects.all(), many=True)
class Meta:
model = MasterStatus
请注意,many
字段使用了fk_type
,MasterStatus
有MasterRepaymentType
个。{/ p>
希望这有帮助。