2012-10-16 14 views
9

Belgeleri bir genel işlevde almaya çalışıyorum, ancak birkaç modelde belge özniteliği olmayabilir. Bir modelin belgenin mülküne sahip olup olmadığını kontrol etmenin bir yolu var mı, ve şartlı olarak kod çalıştırıyor mu?Django nesnenin görünüme sahip olup olmadığını nasıl kontrol edeceğini gösterir

if self.model has property documents: 
     context['documents'] = self.get_object().documents.() 
+0

Neden hiç orada olmayan bir model kullanıyorsunuz? –

+0

Tüm modelleri tek şablonda görüntüleyen genel görünümüm var. Başlangıçta hiç dokümanım yoktu ama şimdi az sayıda belge eklenmiş. bu yüzden o zaman kontrol etmek için bir yol varsa,% 90 aynı kod ile yeni görünümü tanımlamanız gerektiğini düşünüyordum. Hackish çözümü için bir işlev denedim ve bu yüzden ben sitede herhangi bir hata alamadım ama uygun bir yol arıyordu – user825904

+0

Neden modelin hangi görünüm kullanması gerektiğini sanırım varsayılan olarak? –

cevap

24

Sen modeli belgeler özelliğine sahip olup olmadığını kontrol etmek için hasattr() kullanabilirsiniz.

if hasattr(self.model, 'documents'): 
    doStuff(self.model.documents) 

Ancak this answer bazı insanlar "daha kolay izin daha af dilemektir" yaklaşımı daha iyi bir uygulamadır hissetmek olduğuna dikkat çekiyor.

try: 
    doStuff(self.model.documents) 
except AttributeError: 
    otherStuff() 
İlgili konular