Bu Django uygulama eğitiminde choice_set nedir?


144

Django eğitiminde, ilk Django uygulamanızı yazma bölüm 1'de bu satır vardır :

p.choice_set.create(choice='Not much', votes=0)

Varlığa nasıl choice_setdenir ve nedir?

Sanırım choicebölüm Choiceöğretici kullanılan modelin küçük harfli versiyonu , ama nedir choice_set? Detaylandırabilir misin?

GÜNCELLEME: Ben'in cevabına dayanarak, bu belgeleri buldum: İlişkileri "geriye" takip ediyorum .


Bu belgelere yeni bağlanmalıydım, cevabımdan daha net.
Ben James

@ James James: hayır, farklı bir şekilde formüle edilmesini takdir ediyorum, özellikle de ORM'in yaptıklarının detaylandırılması. Django belgeleri zaman zaman kısa olabilir.
Peter Mortensen

40
Bunu sorduğunuz için teşekkür ederim, öğreticide açıklanmadığı için bununla karıştırdım.
claudio

4
Vay be, bu bir acemi için yüklü bir kod satırı. Benim için engel, daha sonra seçimini arttırmak için Soru ile ilgili bir Seçim Nesnesi elde ettiğimizi anlıyordu. RelatedManager kavramı, öğreticide bu noktaya değinilmemiştir, bu yüzden gerçek bir tökezleme bloğu olabilir.
frozenjim

@PeterMortensen açıklandığı belgeleri lütfen güncelleyebilir misiniz? teşekkür ederim
MH

Yanıtlar:


179

ChoiceHer birini a ile ilişkilendiren yabancı bir anahtar yarattınız Question.

Yani, her birinin modelde bildirdiğiniz Choicebir questionalanı vardır .

Django'nun ORM'si ilişkiyi de geriye doğru takip eder ve Questionotomatik olarak o modelin alanıyla modelin foo_setnerede Fooolduğu adlı her örnek üzerinde bir ForeignKeyalan oluşturur.

choice_seta, RelatedManagerbir Sorgu kümelerini oluşturabilir olan Choiceilgili nesneler Question, örneğin, örneğinq.choice_set.all()

foo_setDjango'nun otomatik olarak seçtiği adlandırmadan hoşlanmıyorsanız veya aynı modele ait birden fazla yabancı anahtarınız varsa ve bunları ayırt etmeniz gerekiyorsa, related_namebağımsız değişkenini kullanarak kendi geçersiz kılma adınızı seçebilirsiniz ForeignKey.


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

2
Doğru, bu RelatedManagersorgu kümeleri oluşturabilir.
Ben James
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.