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

10-11 08:36