2016-10-10 20 views
0

如何在Django中獲取空ForeignKey的默認值。對於前:在Django中獲取空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') 

這工作,如果我改變的關鍵ownerowner_id或別的東西。但我不能這樣做,因爲它在別處有依賴關係。

回答

-1

您可以將default屬性設置爲字段。來自docs的說明

如果設置,則會給出默認值,如果未提供輸入值,則該字段將用於字段。如果未設置,則默認行爲是根本不填充該屬性。

部分更新操作期間不應用默認值。在部分更新的情況下,只有傳入數據中提供的字段纔會返回驗證值。

+0

我不想把它設置在數據庫中,而是我只是想要一個默認值incase在數據庫中的值爲NULL,同時檢索資源 – dnit13

+0

我的意思是將'default'屬性設置爲序列化程序字段。不在模型中。希望你檢查附加的文檔鏈接。 – Sagar

+0

是的,在獲取數據時默認不起作用。你應該先嚐試一下。 – dnit13