我正在尝试为模型创建自定义验证,以检查它start_date是否在它之前end_date并且证明几乎不可能.
我试过的东西:
内置的Django验证器:没有检查这个
写我自己的,像这样:
def validate_date(self):
if self.start_date < self.end_date:
raise serializers.ValidationError("End date must be after start date.")
Run Code Online (Sandbox Code Playgroud)我已经添加到Serializer类(然后是模型)的那段代码,但似乎没有在任何一个位置调用它.
我也发现这个代码,可能是使用的位,但我不知道如何在我的方法-整合似乎是它的工作来验证一个模型属性,但我需要两个属性之间的检查.
我的模特:
class MyModel(models.Model):
created = models.DateTimeField(auto_now_add=True)
relation_model = models.ForeignKey(RelationModel, related_name="mymodels")
priority = models.IntegerField(
validators = [validators.MinValueValidator(0), validators.MaxValueValidator(100)])
start_date = models.DateField()
end_date = models.DateField()
@property
def is_active(self):
today = datetime.date.today()
return (today >= self.start_date) and (today <= self.end_date)
def __unicode__(self):
...
class Meta:
unique_together = ('relation_model', 'priority', 'start_date', 'end_date')
Run Code Online (Sandbox Code Playgroud)
Fyi,所有其他验证工作!
我的序列化器:
class MyModelSerializer(serializers.ModelSerializer):
relation_model = …Run Code Online (Sandbox Code Playgroud)