2010-07-02 3 views
3

나는 "Private FileField"라는 사용자 정의 필드를 만들었습니다. 난 장고 - 남쪽과 일할 수 없어요. 사우스 필드 규칙의Django South : 사용자 정의 필드에 대한 규칙을 만드는 방법은 무엇입니까?

나의 이해가 http://south.aeracode.org/docs/tutorial/part4.html#tutorial-part-4http://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 실행 - 다음 메시지와 함께 자동 실패 :

Exception: <class 'private_filefield.fields.FileField'> expects one keyword arg 'upload_to'

는 (이 happes 때 사이트 패키지라고 FakeORM에/남/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'}) 
    } 

'file'에 대한 매개 변수로 'upload_to'가 없음에 유의하십시오.

+0

FileField를 사용하여 모델을 볼 수 있습니까? 오류 메시지에서 upload_to 매개 변수가 부족한 것으로 보입니다. –

+0

모델의 FileField에 upload_to 매개 변수가 있습니다. 그러나 자동으로 생성 된 '모델'섹션에는이 매개 변수가 없습니다. 그래서 내 질문에 축소 할 수있을 것 "자동 생성 된 모델 또한이 'upload_to'매개 변수를 포함 할 것입니다 확인해야합니까? –

답변

1

바하마, 나는 이것을 주석에 쓰려고했지만 단락이 부족해서 나를 싫어했다.

Django 앱에서 사용자 정의 필드를 그대로 설정하고이를 사용하기 위해 더미 모델을 만들었습니다. 남쪽은 완벽하게 작동합니다. 다른 FileField를 추가하고 아무런 문제없이 schemamigration --auto을 실행할 수있었습니다. 남한이 제대로 설립되었는지 확신합니다.

솔직히 모델을 확인하여 upload_to 매개 변수가 있는지 확인 했습니까? 이로 인해 정확하게이 오류 메시지가 나타납니다 (그리고 남한은 정확히 정확히).

+0

안녕 루크, 나는 더 이상 /이 문제를 재현 할 수 없지만 잠시 동안 계속 저를 괴롭 히고 있습니다. 주위를 둘러보고 더 이상 문제가없는 것으로 나타났습니다. 도와 줘서 고마워서 고마워! –

+0

하! 나는 결국 미쳤다. .. 나는 남쪽 0.7에서 이것을 단지 다시 경험했다. 그러나이 문제는 0.7.3에서 수정되었습니다. 루크가 나를 도와 줘서 고마워. –

관련 문제