gpt4 book ai didi

python - DRF 3.7.0 删除了字段中的无处理并破坏了我的外键源字段。有办法解决吗?

转载 作者:行者123 更新时间:2023-12-05 01:18:07 24 4
gpt4 key购买 nike

我注意到 this Django Rest Framework commit3.6.3 升级到 3.7.0 时破坏了我的项目。这是模型的相关部分,现在已损坏:

class MarketingPlan(models.Model):
promotion = models.ForeignKey(Promotion, null=True)

class MarketingPlanSerializer(serializers.ModelSerializer):
promotion = serializers.CharField(
source='fk_promotion.id',
read_only=False,
allow_null=True)
class Meta:
model = MarketingPlan
fields = ('promotion',)

访问此序列化器的data属性,当Promotion外键为None

>> mp = MarketingPlan.objects.first()
>> MarketingPlanSerializer(mp).data

rest_framework/fields.py", line 100, in get_attribute
instance = getattr(instance, attr)
AttributeError: 'NoneType' object has no attribute 'id'

因此,get_attribute 过去常常跳过 None,现在它会搜索相关字段 promotion< 的 .id 属性 在我的特殊情况下,即使它是 None

解决方法是什么?

最佳答案

当然,您需要为序列化程序的相关字段显式设置一个默认值:

class MarketingPlanSerializer(serializers.ModelSerializer):
promotion = serializers.CharField(
source='fk_promotion.id',
read_only=False,
allow_null=True,
default=None)
class Meta:
model = MarketingPlan
fields = ('promotion',)

关于python - DRF 3.7.0 删除了字段中的无处理并破坏了我的外键源字段。有办法解决吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46849343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com