我想在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
最佳答案
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
。希望这可以帮助。
关于django - many = True TypeError对象不可迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34350683/