2012-08-16 13 views
7

Bir web sitesi için form oluşturmak için ModelForms kullanıyorum, ancak Seç kutusunda hangi metnin görüntülendiğini daha fazla denetlemek istiyorum.Django için form seç alanı

bir örnek modeli birincil anahtarı olan bu modelin bir modelForm yaparken Yani, benim sorunum, yabancı anahtar alanları seçin alanlara yapılan bu

class Test(models.Model) 
    ID = IntegerField() 
    Label = CharacterField() 
    recipient = ForeignKey(Person) 
    product = ForeignKey(Product) 

, gibi görünebilir Temel değerdeki nesne ve görüntülenen metin, __unicode__() yöntemindeki nesnelerden alınan metindir. Bu durumda, sadece ürün kimliği görüntülenir (bu, kullanıcıya bir anlam ifade etmeyen bir seri kod numarasıdır). "[Seri], [ürün adı]" gibi özel bir etiket yapabilmek istiyorum.

Resmi Django belgelerinde herhangi bir işaretçi bulamıyorum, bu yüzden kimsenin yardımcı olup olmayacağını merak ettim?

+0

Eğer 'beklenen neyin göstermek için modelin __unicode__' yöntemi değiştirilemez? – Rohan

+0

Bu bariz çözüm olurdu, ancak unicode yöntemi, sadece seriyi göstermek için önemli olduğu web sitesi boyunca çok kullanılır. Yani bu bir seçenek değil, korkarım – Eldamir

cevap

7

Django docs regarding the ModelChoiceField'a göz atın. Alıntı: Modelin __unicode__ yöntemi dize alanın seçimler kullanılmak üzere nesnelerin gösterimini geri çağrılır

; için özelleştirilmiş gösterimler sağlar, alt sınıf ModelChoiceField ve geçersiz kılma label_from_instance. Bu yöntem, model nesnesini alacak ve temsil etmek için uygun bir dize döndürmelidir. Örneğin:

class MyModelChoiceField(ModelChoiceField): 
    def label_from_instance(self, obj): 
     return "My Object #%i" % obj.id 
+0

Bir şeye benziyor, işe yarayabilir. Ben kontrol edeceğim – Eldamir

+0

Parlak çalıştı. Sağol kanka – Eldamir