在Django中获取null ForeignKey的默认值

时间:2016-10-10 12:50:19

标签: django python-2.7 django-rest-framework

如何在Django中获取null ForeignKey的默认值。例如:

class Owner(models.Model)
    name = models.CharField(max_length=200, unique=True)

class Entity(models.Model):
    name = models.CharField(max_length=200, unique=True)
    owner = models.ForeignKey(Owner)

我正在使用DRF,所以我尝试了这个序列化器:

class EntitySerializer(serializers.ModelSerializer):
    owner = serializers.SerializerMethodField(read_only=True)

    def get_owner(self, obj):
        if obj.owner:
            return obj.owner_id
        return -1

    class Meta:
        model = Entity
        fields = ('id', 'name', 'owner')

如果我将密钥owner更改为owner_id或其他内容,则此方法有效。但我不能这样做,因为它在其他地方有依赖。

1 个答案:

答案 0 :(得分:-1)

您可以将default属性设置为字段。来自docs

的解释
  

如果设置,则提供默认值,如果未提供输入值,将使用该字段。如果未设置,则默认行为是根本不填充该属性。

     

在部分更新操作期间不应用默认值。在部分更新的情况下,只有传入数据中提供的字段才会返回验证值。