2011-01-17 12 views
13

Używam Django 1.2.3 i South 0.7.3.Reguła introspekcji Django-South nie działa

Próbuję przekonwertować moją aplikację (o nazwie core), aby użyć Django-South. Mam niestandardowy model/pole, którego używam, o nazwie ImageWithThumbsField. Jest to w zasadzie tylko ol”django.db.models.ImageField z niektórych atrybutów, takich jak wzrost, waga, itp

Starając się ./manage.py convert_to_auth core I receieve Południa zamrażanie błędów. Nie mam pojęcia dlaczego, jestem prawdopodobnie brakuje czegoś ...

Używam prostego niestandardową Model:

from django.db.models import ImageField 

class ImageWithThumbsField(ImageField): 
    def __init__(self, verbose_name=None, name=None, width_field=None, height_field=None, sizes=None, **kwargs): 
     self.verbose_name=verbose_name 
     self.name=name 
     self.width_field=width_field 
     self.height_field=height_field 
     self.sizes = sizes 
     super(ImageField, self).__init__(**kwargs) 

i to jest mój przepis introspekcji, który dodaję do góry mój models.py :

from south.modelsinspector import add_introspection_rules 
from lib.thumbs import ImageWithThumbsField 

add_introspection_rules(
    [ 
     (
      (ImageWithThumbsField,), 
      [], 
      { 
       "verbose_name": ["verbose_name", {"default": None}], 
       "name":   ["name",   {"default": None}], 
       "width_field": ["width_field", {"default": None}], 
       "height_field": ["height_field", {"default": None}], 
       "sizes":  ["sizes",  {"default": None}], 
      }, 
     ), 
    ], 
    ["^core/.fields/.ImageWithThumbsField",]) 

to błędy I receieve:

! Cannot freeze field 'core.additionalmaterialphoto.photo' 
! (this field has class lib.thumbs.ImageWithThumbsField) 
! Cannot freeze field 'core.material.photo' 
! (this field has class lib.thumbs.ImageWithThumbsField) 
! Cannot freeze field 'core.material.formulaimage' 
! (this field has class lib.thumbs.ImageWithThumbsField) 

! South cannot introspect some fields; this is probably because they are custom 
! fields. If they worked in 0.6 or below, this is because we have removed the 
! models parser (it often broke things). 
! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork 

Czy ktoś wie dlaczego? Co ja robię źle?

Odpowiedz

17

Mam to! :)

zmieniłem to: ["^core/.fields/.ImageWithThumbsField",]

do tego: ["^lib\.thumbs\.ImageWithThumbsField",]

Cała ta linia jest wyrażeń regularnych ścieżek pythonową Django typów pól (ponownie przeczytać, długie zdanie) .

Południowa natknęła się na nazwę pola ImageWithThumbsField, która została zadeklarowana na ścieżce lib.thumbs. Dałem mu złą drogę, więc South wciąż nie wiedział, co zrobić, gdy natknął się na to pole.

Kiedy dałem mu właściwą ścieżkę, wiedział, jak sobie poradzić z polem, kiedy już do niego dotarł.

+0

Nie mogę jeszcze przyjąć odpowiedzi, http://StackOverflow.com mówi, że muszę poczekać 2 dni, zanim to zrobię. –

+4

Prawdopodobnie to pytanie jest zbyt szczegółowe, by przyciągnąć uwagę, ale po prostu wiesz, że uratowałeś mi dzień. Poświęciłem godziny, aby osiągnąć rozwiązanie, a to całkowicie załatwiło sprawę. Tak jak sidenote, to, co dla mnie zadziałało, było ["^ myapp.thumbs.ImageWithThumbsField",] ponieważ moje thumbs.py znajduje się w reżimie myapp. Twoje zdrowie! – rlafuente

+0

NP. Miło, że mogłem pomóc. :) –

Powiązane problemy