如何在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
或其他内容,则此方法有效。但我不能这样做,因为它在其他地方有依赖。
答案 0 :(得分:-1)
您可以将default
属性设置为字段。来自docs
如果设置,则提供默认值,如果未提供输入值,将使用该字段。如果未设置,则默认行为是根本不填充该属性。
在部分更新操作期间不应用默认值。在部分更新的情况下,只有传入数据中提供的字段才会返回验证值。