我有以下模型:
class PersonDiscount(models.Model):
user = models.OneToOneField('backend.Customer', related_name='discount', on_delete=models.CASCADE, error_messages={
'unique': _('A discount setting is already set up for this customer.')})
discount = models.IntegerField(default=0)
discount_auto = models.IntegerField(default=0)
auto = models.BooleanField(default=True)
class Meta:
ordering = ['-id']
以及模型的以下序列化程式:
class PersonDiscountPostSerializer(serializers.ModelSerializer):
class Meta:
model = PersonDiscount
fields = '__all__'
extra_kwargs = {
'user': {
'error_messages': {
'unique': _('A discount setting is already set up for this customer.')
}
}
}
當我嘗試使用來自 api 的現有用戶創建 PersonDiscount 實體時,我沒有收到我在模型和序列化程式中設定的自定義錯誤訊息。
{
"user": [
"This field must be unique."
]
}
我已經在檔案中查找過并且找不到任何其他方法來理解為什么覆寫 error_messages 沒有得到應用。我也已經多次重新啟動 django runserver
希望有人能幫我解決這個問題
uj5u.com熱心網友回復:
您可以手動驗證唯一性,如下所示:
class PersonDiscountPostSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(
required=True,
queryset=Customer.objects.all(),
)
def validate_user(self, value):
exists = PersonDiscount.objects.filter(user=value).exists()
if exists:
raise serializers.ValidationError("err msg")
return value
class Meta:
model = PersonDiscount
fields = '__all__'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364059.html
