gpt4 book ai didi

django - 非常简单的 Django 自定义字段

转载 作者:行者123 更新时间:2023-12-05 00:29:05 25 4
gpt4 key购买 nike

我正在尝试做一个非常简单的自定义字段,但似乎无法让它工作。

目前,我将此字段添加到我的应用程序中的几乎所有模型中。我想将其指定为自定义字段以避免重复代码。

identifier = models.CharField(
max_length = 20,
unique = True, validators = [validators.validate_slug],
help_text = "Help text goes here."
)

我有的是这个:
class MyIdentifierField(models.CharField):

description = "random string goes here"

__metaclass__ = models.SubfieldBase

def __init__(self, *args, **kwargs):
kwargs['max_length'] = 20
kwargs['unique'] = True
kwargs['validators'] = [validators.validate_slug]
kwargs['help_text'] = "custom help text goes here"
super(MyIdentifierField, self).__init__(*args, **kwargs)

def db_type(self, connection):
return 'char(25)'

这样我就可以这样使用它:
identifier = MyIdentifierField()

但是,当我这样做时 python manage.py schemamigration --auto <myapp> ,我收到以下错误:
 ! Cannot freeze field 'geral.seccao.identifier'
! (this field has class geral.models.MyIdentifierField)

! South cannot introspect some fields; this is probably because they are custom
! fields. If they worked in 0.6 or below, this is because we have removed the
! models parser (it often broke things).
! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork

我浏览了推荐的网页,但似乎仍然找不到解决方法。任何帮助表示赞赏。谢谢。

最佳答案

在描述你的领域时,你需要帮助 South 一点。有两种方法可以做到这一点,如文档所述:http://south.aeracode.org/wiki/MyFieldsDontWork

我的首选方法是在字段类上添加一个 South 字段三元组:

def south_field_triple(self):
try:
from south.modelsinspector import introspector
cls_name = '{0}.{1}'.format(
self.__class__.__module__,
self.__class__.__name__)
args, kwargs = introspector(self)
return cls_name, args, kwargs
except ImportError:
pass

希望能帮到你。

关于django - 非常简单的 Django 自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17813144/

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