2012-05-22 52 views
0

我的項目使用South,我想爲我的某些應用程序使用django-private-files字段。 private_files不提供內省規則,所以我在應用程序的fields.py文件中寫了一些內容。通常論文非常簡單,但我從不必爲具有屬性的自定義字段編寫規則,這些屬性的值是可用參數調用的。這是我的了:Django South add_inrospection_rules for django-private-files字段,可調用字段屬性值

# 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)

在此先感謝您的幫助。

回答

1

根據Andrew Godwin的說法:「南方的內省系統不是爲二級呼叫而設計的。」(reference)這意味着此時解決此問題的唯一方法是省略condition的規則參數,只是告訴該領域是確定的。所以:

# 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"])