2017-12-26 5 views
0

오류주기 models.pyPrimaryKeyRelatedField (소스 = 'order.market'READ_ONLY = TRUE)는 AttributeError에게

class ClientTransaction(model.Models): 
    order = models.ForeignKey('main.Order', related_name='client_transaction', on_delete=models.PROTECT, null=True) 

class Order(BaseModel): 
    market = models.ForeignKey('main.Market', on_delete=models.PROTECT, related_name='order') 

serializers.py

class ClientTransactionSerializer(ModelSerializer): 
    market = serializers.PrimaryKeyRelatedField(source='order.market', read_only=True) 

    class Meta: 
     model = ClientTransaction 
     fields=['market'] 

제공 'NoneType'개체 어떤 속성 '시장'

장고 == 2가 없습니다, djangorestframework => 3.7.1

full error image

+0

초기화하지 않은 주문에서 시장을 얻으려고합니까? –

답변

0

ForeignKey 필드에서 데이터를 가져 오기 위해 serializer를 사용자 정의해야합니다. 위에서 설명한 상황에서는 초기화 된 순서를 얻지 않으려 고합니다. 이 오류를 처리하기 위해 SerializerMethodField를 사용해보십시오. 예 :

class ClientTransactionSerializer(ModelSerializer): 
    market = serializers.SerializerMethodField() 

    def get_market(self, obj): 
     return obj.order.market if obj.order else None 

    class Meta: 
     model = ClientTransaction 
     fields=['market']