Ich versuche ein benutzerdefiniertes Feld zu meinem Django-Projekt hinzuzufügen, das South verwendet. Aus diesem Grund versuche ich (zum ersten Mal) introspection rules for South zu schreiben. Ich glaube, dass mein Fall so einfach wie möglich ist, da ich einfach ein CharField erweitere. Im Einzelnen:Einfaches benutzerdefiniertes Feld zu Django hinzufügen - So schreiben Sie South Introspection Rules
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)
Dies ist von einem Schnipsel Django genannt jQuery color picker model field für die Interessenten.
Da ich keine neuen Attribute hinzugefügt bin, ich glaube, ich habe nur diese Zeilen Code hinzufügen:
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^myproject\.myapp\.models\.ColorField"])
Wahrscheinlich liegt auf der Hand, aber wo sollten sie gehen? Ist meine Annahme, dass dies alles ist, was ich tun muss, richtig?
Ich habe mehrere Fragen hier gepostet, aber die meisten befassen sich mit viel komplexeren Introspektionen.
Pro http://south.readthedocs.org/en/latest/customfields.html#where-to-put-the-code habe ich versucht, den Code an der Spitze meiner models.py-Datei, wo das benutzerdefinierte Feld definiert ist. Aber das hat nicht funktioniert.