Próbuję dodać niestandardowe pole do mojego projektu Django, który używa South. Z tego powodu próbuję (po raz pierwszy) napisać introspection rules for South. Uważam, że moja sprawa jest najprostsza z możliwych, ponieważ po prostu rozszerzam CharField. Konkretnie:Dodawanie prostego niestandardowego pola do Django - jak pisać południowe reguły introspekcji
class ColorField(models.CharField):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 10
super(ColorField, self).__init__(*args, **kwargs)
def formfield(self, **kwargs):
kwargs['widget'] = ColorPickerWidget
return super(ColorField, self).formfield(**kwargs)
Jest to urywek z Django nazwie jQuery color picker model field dla zainteresowanych.
Ponieważ ja nie dodając żadnych nowych atrybutów, wierzę, tylko trzeba dodać te linie kodu:
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^myproject\.myapp\.models\.ColorField"])
To chyba oczywiste, ale gdzie mają iść? Ponadto, czy moje założenie, że to wszystko, co muszę zrobić, jest prawidłowe?
Przejrzałem kilka pytań zamieszczonych tutaj, ale większość dotyczy bardziej złożonych introspekcji.
Per http://south.readthedocs.org/en/latest/customfields.html#where-to-put-the-code, Próbowałem umieścić kod na górze mojego pliku models.py, w którym zdefiniowane jest niestandardowe pole. Ale to nie zadziałało.