1

Django的REST框架模型串行我有一些領域模型和unique together用了獨特的一起驗證

.... 
class Meta(object): 
    unique_together = ('device_identifier', 'device_platform',) 

很顯然,這樣一來,關於Django的REST框架序列化,我得到一個錯誤,當我嘗試使用相同的device_identifierdevice_platform(如果已經存在具有該數據的條目)進行PUT。

{ 
    "non_field_errors": [ 
    "The fields device_identifier, device_platform must make a unique set." 
    ] 
} 

是否可以在我的模型序列化程序中禁用此驗證? 因爲我需要在保存模型步驟期間管理這種情況(對於我來說,在串行器驗證中,這不是錯誤)

回答

0

您需要從序列化程序列表中刪除驗證程序。

雖然不完全一樣,步驟進行了說明here

1

Django的REST框架應用在串行的UniqueTogetherValidator。您可以通過覆蓋序列化程序定義中的validators字段來刪除該字段。

class ExampleSerializer(serializers.ModelSerializer): 
    class Meta: 
     validators = [] 

注意,這還除去在模型上,這可能不是最好的主意應用於其他unique-check validators。爲了避免這種情況,只需重寫序列化程序中的get_unique_together_validators方法,以確保只刪除唯一性檢查。

class ExampleSerializer(serializers.ModelSerializer): 
    def get_unique_together_validators(self): 
     ''' 
     Overriding method to disable unique together checks 
     ''' 
     return []