- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个自定义字段“Private FileField”。我无法让它与 django-south 一起工作。
我对南场规则的理解是基于 http://south.aeracode.org/docs/tutorial/part4.html#tutorial-part-4和 http://south.aeracode.org/docs/customfields.html
相关片段是:
class FileField(models.CharField):
__metaclass__ = models.SubfieldBase
def __init__(self, *args, **kwargs):
if not 'upload_to' in kwargs:
raise Exception("%s expects one keyword arg 'upload_to'" % (self.__class__))
self.upload_to = kwargs['upload_to']
del kwargs['upload_to']
kwargs['max_length'] = 255
super(FileField, self).__init__(*args, **kwargs)
和
rules = [
(
(FileField,),
[],
{
"upload_to": ["upload_to", {}],
},
)
]
from south.modelsinspector import add_introspection_rules
add_introspection_rules(rules, ["^private_filefield\."])
运行 manage.py schemamigration my_app_name --auto 失败并显示以下消息:
Exception: <class 'private_filefield.fields.FileField'> expects one keyword arg 'upload_to'
(当调用 FakeORM 中的 site-packages/south/orm.py",第 46 行时,就会发生这种情况)
完整代码可以在以下位置找到: http://bitbucket.org/vanschelven/django_private_filefield/src/tip/private_filefield/fields.py
===编辑:添加下面的文字===
这是自动生成的迁移的生成“模型”部分的相关部分:
'mailfile.mailfile': {
'Meta': {'object_name': 'MailFile'},
'creation_date': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'expires_on': ('django.db.models.fields.DateField', [], {'default': 'datetime.date(2010, 7, 16)'}),
'file': ('private_filefield.fields.FileField', [], {'max_length': '255'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
'secret': ('django.db.models.fields.CharField', [], {'max_length': '40'})
}
请注意缺少“upload_to”作为“file”的参数。
最佳答案
啊,我试图在评论中写下这个,但缺少段落让我讨厌。
我刚刚在 Django 应用程序中按原样设置了自定义字段,并创建了一个虚拟模型来使用它。南工作完美。我添加了另一个 FileField 并且能够毫无问题地运行 schemamigration --auto
。所以,我很确定您已正确设置 South。
老实说,您是否检查过您的模型以确保它具有upload_to
参数?这正是导致此错误消息的原因(这意味着 South 完全按照您的指示执行了操作)。
关于 Django 南 : How to create rules for a Custom Field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3165707/
我是一名优秀的程序员,十分优秀!