나는 "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 실행 - 다음 메시지와 함께 자동 실패 :
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'가 없음에 유의하십시오.
FileField를 사용하여 모델을 볼 수 있습니까? 오류 메시지에서 upload_to 매개 변수가 부족한 것으로 보입니다. –
모델의 FileField에 upload_to 매개 변수가 있습니다. 그러나 자동으로 생성 된 '모델'섹션에는이 매개 변수가 없습니다. 그래서 내 질문에 축소 할 수있을 것 "자동 생성 된 모델 또한이 'upload_to'매개 변수를 포함 할 것입니다 확인해야합니까? –