Django中有多个自定义字段。首先,它们扩展了PositiveSmallIntegerField,因为我们使用了int选项,例如:
class BusinessLegalFormField(models.PositiveSmallIntegerField):
choices = [(1,'SRO'), (2, ....]
def __init__(self, *args, **kwargs):
if not args or not args[0]:
kwargs.setdefault('verbose_name', 'Právna forma')
kwargs['choices'] = self.choices
super().__init__(*args, **kwargs)然后我把它改成了CharField和TextChoices
class BusinessLegalFormField(models.CharField):
class Choices(models.TextChoices):
ZIVNOST = 'zivnost', 'Živnosť'
SRO = 'sro', 'Spoločnosť s ručením obmedzeným'
AS = 'as', 'Akciová spoločnosť'
def __init__(self, *args, **kwargs):
if not args or not args[0]:
kwargs.setdefault('verbose_name', 'Právna forma')
kwargs.setdefault('max_length', 64)
kwargs['choices'] = self.Choices.choices
super().__init__(*args, **kwargs)问题是,我刚刚意识到Django没有检测到类型更改。当我将像null=True这样的东西更改为null=False时,就会检测到它,但是DB类型不会从number更改为char。
我怎么才能让它起作用?
发布于 2022-03-24 04:53:17
这种情况,以及它的解决方案,就是在文档中描述
您不能更改自定义字段的基类,因为Django不会检测到更改并对其进行迁移.您必须创建一个新的自定义字段类并更新模型以引用它。 CustomCharField类(models.CharField):CustomTextField类(models.TextField):
https://stackoverflow.com/questions/71586363
复制相似问题