我有以下模型:
from django.db import models
class Artist(models.Model):
TYPE_CHOICES = (
('Person', 'Person'),
('Group', 'Group'),
('Other', 'Other'),)
name = models.CharField(max_length=100)
type = models.CharField(max_length=20, choices=TYPE_CHOICES)
问题是如果我像这样创建一个对象:
Artist.objects.create(...)
类型验证不起作用。
我该如何激活验证?
最佳答案
您可以创建一个(抽象)模型,在保存对象之前首先执行验证:
class ValidatedModel(models.Model):
class Meta:
abstract = True
def save(self, *args, **kwargs):
self.clean_fields() # validate individual fields
self.clean() # validate constraints <i>between</i> fields
self.validate_unique() # validate uniqness of fields
return super(ValidatedModel, self).save(*args, **kwargs)
然后例如在以下模型中使用它:
class Artist(<b>ValidatedModel</b>):
TYPE_CHOICES = (
('Person', 'Person'),
('Group', 'Group'),
('Other', 'Other'),)
name = models.CharField(max_length=100)
type = models.CharField(max_length=20, choices=TYPE_CHOICES)
请注意,如果您调用 .save()
方法(或其他一些函数执行此操作),上面的代码将验证模型对象,但有些方法会绕过调用 .save()
方法,如 Model.objects.bulk_create(..)
等
关于python - 如何验证 objects.create() 方法的 CHOICES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53025785/