0

我的项目使用 South,我想为我的一些应用程序使用django-private-files字段。private_files 不提供自省规则,所以我在我的应用程序的 fields.py 文件中写了一些。通常这些是非常直接的,但我从来不需要为具有属性的自定义字段编写规则,该属性的值是带有参数的可调用对象。这就是我得到的:

# myapp/models.py
from django.db import models
import fields # to add south introspection rules
from private_files import PrivateFileField

class Image(models.Model):
    description = models.CharField("description", max_length = 200)
    image = PrivateFileField("image file", upload_to = 'uploads')

-

# myapp/fields.py
from private_files import PrivateFileField
"""
South introspection rules
"""

from south.modelsinspector import add_introspection_rules
rules = [
    (
        (PrivateFileField,),
        [],
        {
            "condition": ["condition", {}],
            "attachment" : ["attachment", {"default": True}],
        },
    )]

add_introspection_rules(
    rules,
    ["^private_files\.models\.fields\.PrivateFileField"])

这些规则适用于PrivateFileField

当我跑步时,./manage.py schemamigration --initial myapp我得到TypeError: is_user_authenticated() takes exactly 2 arguments (0 given)

在此先感谢您的帮助。

4

1 回答 1

1

根据 Andrew Godwin 的说法:“South 的内省系统不是为第二级调用能力而设计的。”(参考)这意味着此时解决此问题的唯一方法是省略condition参数规则并告诉south该字段是确定的。所以:

# myapp/fields.py
from private_files import PrivateFileField
"""
South introspection rules
"""

from south.modelsinspector import add_introspection_rules
rules = [
    (
        (PrivateFileField,),
        [],
        {
            "attachment" : ["attachment", {"default": True}],
        },
    )]

add_introspection_rules(
    rules,
    ["^private_files\.models\.fields\.PrivateFileField"])
于 2012-05-28T20:29:10.367 回答