2012-07-25 16 views
6

South kullanan Django projem için özel bir alan eklemeye çalışıyorum. Bu nedenle, (ilk kez) introspection rules for South yazmayı deniyorum. Benim durumumun sadece bir CharField'ı genişletmemin mümkün olduğu en basit yol olduğuna inanıyorum. Özellikle:Django'ya Basit Özel Alan Ekleme - South Introspection Kuralları Nasıl Yazılır

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) 

Bu ilgilenenler için jQuery color picker model field adında bir Django pasajımızdaki olduğunu.

from south.modelsinspector import add_introspection_rules 
add_introspection_rules([], ["^myproject\.myapp\.models\.ColorField"]) 

Muhtemelen açıktır ama nereye gittikleri olmalıdır: Ben herhangi bir yeni özellikleri ekledikten değilim beri

, ben sadece bu kod satırları eklemek zorunda inanıyoruz? Ayrıca, benim tüm bunların doğru yapmak zorunda olduğum varsayımı mı?

Burada yayınlanan bazı soruları inceledim, ancak çoğu çok daha karmaşık iç gözlemlerle uğraşır.

http://south.readthedocs.org/en/latest/customfields.html#where-to-put-the-code uyarınca, özel alanın tanımlandığı benim models.py dosyasının en üstündeki kodu uygulamaya çalıştım. Ama bu işe yaramadı.

cevap

7

Basit yanıt: evet, kod, alanın tanımlandığı models.py dosyasına gitmelidir. Doğru kodu:

from south.modelsinspector import add_introspection_rules 
add_introspection_rules([], ["^myapp\.models\.ColorField"]) 

Orada proje adı koyarak neden emin değilim.

1

Dosyanın yolunun doğru olduğundan emin olmanız gerekir. Bahsettiğiniz, kullandığım birine benzer görünüyor, ancak yol şu şekilde olabilir:

add_introspection_rules([], ["^colors\.fields\.ColorField"]) 
İlgili konular