PrimaryKeyRelatedField(source=)订单.市场',read_only=True)给出一个attribute对象

2024-05-16 01:17:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在型号.py你知道吗

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')

在序列化程序.py你知道吗

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

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

给出错误:AttributeError:'NoneType'对象没有属性'market'

django==2,djangorestframework=>;3.7.1

full error image


Tags: namepymodelmainonmodelsorderprotect
1条回答
网友
1楼 · 发布于 2024-05-16 01:17:40

您需要自定义序列化程序以从ForeignKey字段获取数据。在所描述的情况下,您尝试获取未初始化的顺序。 尝试使用序列化字段来处理此错误。例如:

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']

相关问题 更多 >