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によると、「サウスのイントロスペクションシステムは、第2レベルの呼び出し可能性を考慮して設計されていません。」(参照)これは、現時点でこの問題を回避する唯一の方法は、議論のルールを省略して、サウスconditionに伝えることです。フィールドはOKです。それで:

# 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 に答える