Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Django中null ForeignKey的默认值_Django_Python 2.7_Django Rest Framework - Fatal编程技术网

获取Django中null ForeignKey的默认值

获取Django中null ForeignKey的默认值,django,python-2.7,django-rest-framework,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) 我正在使用DR

如何在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\u id
或其他内容,则此操作有效。但是我不能这样做,因为它在其他地方有依赖项。

您可以为字段设置
default
属性。政府的解释

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

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


您可以为字段设置
default
属性。政府的解释

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

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


我不想在数据库中设置它,相反,我只需要一个默认值,以防在检索资源时数据库中的值为NULL。我的意思是为序列化程序字段设置
default
属性。模型中没有。希望您检查了附加的文档链接。是的,默认值在获取数据时不起作用。您应该先尝试一下。我不想在数据库中设置它,我只需要一个默认值,以防在检索资源时数据库中的值为空。我的意思是为序列化程序字段设置
default
属性。模型中没有。希望您检查了附加的文档链接。是的,默认值在获取数据时不起作用。你应该先试试。