首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django自定义字段更改未被迁移检测到

Django自定义字段更改未被迁移检测到
EN

Stack Overflow用户
提问于 2022-03-23 11:24:56
回答 1查看 287关注 0票数 0

Django中有多个自定义字段。首先,它们扩展了PositiveSmallIntegerField,因为我们使用了int选项,例如:

代码语言:javascript
复制
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)

然后我把它改成了CharFieldTextChoices

代码语言:javascript
复制
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。

我怎么才能让它起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-24 04:53:17

这种情况,以及它的解决方案,就是在文档中描述

您不能更改自定义字段的基类,因为Django不会检测到更改并对其进行迁移.您必须创建一个新的自定义字段类并更新模型以引用它。 CustomCharField类(models.CharField):CustomTextField类(models.TextField):

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71586363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档