many = True TypeError对象不可迭代

时间:2015-12-18 07:44:03

标签: django django-rest-framework

我想在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

1 个答案:

答案 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_typeMasterStatusMasterRepaymentType个。{/ p>

希望这有帮助。