gpt4 book ai didi

python - 如何验证 objects.create() 方法的 CHOICES?

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:08 24 4
gpt4 key购买 nike

我有以下模型:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com