这是我的模型:
from django.db import models
class PetSex(models.TextChoices):
MALE = 'Male', 'Male'
FEMALE = 'Female', 'Female'
NOT_INFORMED = 'Not Informed', 'Not Informed'
class Pet(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
weight = models.FloatField()
sex = models.CharField(max_length=20, choices=PetSex.choices, default=PetSex.NOT_INFORMED)
def __str__(self):
return self.name
每次我尝试添加一个无效的性别,它应该返回一个错误,但它一直接受它。
>>> from pets.models import Pet
>>> petinfos_2 = {"name": "xamaria", "age": 1, "weight": 30, "sex": "Malasdasdde"}
>>> test123 = Pet(**petinfos_2)
>>> test123.save()
>>> test123.name
'xamaria'
>>> test123.sex
'Malasdasdde'
>>>
1条答案
按热度按时间ohfgkhjo1#
您面临的问题与
Pet
模型中sex
字段的验证有关。目前,您正在使用CharField
和choices=
,但它不强制执行验证。实现此目的的一种方法是覆盖
Pet
模型中的.save()
方法,并手动检查提供的sex
值是否有效:现在,当您尝试保存一个具有无效sex值的
Pet
示例时,它将引发一个ValidationError
并阻止保存数据。