2010-01-12 14 views
95
Django öğretici bu çizgi vardır

, Writing your first Django app, part 1:Django eğitimi: choice_set nedir?

choice_set ortaya denir ve ne olduğunu nasıl
p.choice_set.create(choice='Not much', votes=0) 

?

choice bölümünün eğitimde kullanılan Choice modelinin küçük harfli sürümü olduğunu, ancak choice_set nedir? Detaylandırır mısın?


Güncelleme 1: Following relationships "backward": Ben James 'Yanıta göre bunu açıklanan belgelerinde yer alan.

+0

Sadece bu belgelere bağlanmış olmalı, cevabımdan daha açık. –

+0

@Ben James: Hayır, özellikle farklı bir şekilde formüle etmeyi takdir ediyorum, özellikle ORM'nin yaptığı şeylerin ayrıntılandırılması. Django belgeleri bazen tersine olabilir. –

+19

Bunu sorduğunuz için teşekkür ederim, eğitimde açıklanmadıkları için bununla kafam karışmıştı. – n00b

cevap

112

Her biri'a bağlayan Choice numaralı yabancı anahtarı oluşturdunuz.

Yani, her bir Choice, modelde bildirdiğiniz bir question alanına sahiptir.

Django'nın orm otomatik Foo bu model bir ForeignKey alanı ile bir model foo_set adlandırılan her durumda bir alan meydana getirmek çok Question geriye ilişkisini izlemektedir.

choice_set örneğin Question örneğine ilişkili Choice nesnelerin Sorgu kümelerini oluşturabilir bir RelatedManager olduğu q.choice_set.all()

Django otomatik seçer, yoksa aynı model için birden fazla yabancı anahtar ve bunları ayırt etmek gerekiyorsa, related_name argüman için kullanarak kendi ağır basan bir ad seçebilirsiniz foo_set adlandırmayı beğenmezseniz ForeignKey.

+0

Teşekkürler. Şimdi daha çok şey biliyorum. Choice_set bir "Yönetici" değil mi? (bu bir sınıf QuerySet örneğini döndürebilir). Yoksa aynı şey mi? –

+1

Haklısınız, querysets yaratabilen bir "RelatedManager". –

İlgili konular