2015-12-18 6 views
3

Я хочу получить значения внешнего ключа в PUT и GET, но при использовании many=True я получаю ошибку TypeError object is not iterable. Ниже приведены мои фрагменты.many = True TypeError object is not itable

У меня есть две модели под названием 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

Я не уверен, связано ли это с проблемой, но почему «MasterTypeSerializer.Meta.model = MasterRepaymentType»? Какова девизация этой модели «MasterRepaymentType»? – Todor

+0

извините ошибочно напечатано. я исправил MasterRepaymentType до MasterType – somechow

ответ

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.

Надеюсь, это поможет.

+0

можно ли получить вложенные значения модели MasterStatus в MasterType? – somechow