2011-01-16 20 views
5

modele etrafında alıntılar var.Django: Neden bu iki ForeignKey tanımları arasındaki fark ne olduğunu bilmek istiyorum ForeignKey tanımı

(1) MyFKField = models.ForeignKey('MyModel') 
(2) MyFKField = models.ForeignKey(MyModel) 

(Ben ... düşünüyorum) o sırada (1) aynı dosyaya ve ithal edilecek diğer ihtiyaçlarını tanımlanması gerekir MyModel ama aklın emin değilim/bunu yapmanın yararlar öyle ya da böyle.

Django dokümanlar bir göz vardı ama bir şey bulamadım ve Im da emin değilim bu, sormak doğru yerde olup olmadığını özür eğer öyleyse değil.

Alkış

cevap

5

Django docs devletler (1): - halkalı için (muhtemelen henüz tanımlanmamış bir modele atıfta için (model.ForeignKey('self') örn)

    • Bir özyinelemeli ilişki istiyorum ilişkiler).
    • bir kısayol başka bir uygulamadaki bir model başvurmak için (örneğin - model.ForeignKey('app.mymodel'))

    Ancak genel olarak

  • doğrudan modeli sınıfını belirterek açıktır nereden geliyor (2). sınıf MyModel tanımı (kodunda) sınıf MyFKField tanımı altında ise

    6

    tırnak olmadan, bir model ya dosya içinde tanımlanmış veya import yoluyla ithal bir referans var. Tırnaklarla Django, tüm yüklü uygulamalardaki tüm modeller arasında model bulmaktan sorumludur. Eğer bir dize kullanırsınız

    +0

    Bu, tırnak işaretleriyle kastediyorsa, modeli içe aktarmanız gerekmez mi? – neolaser

    +2

    Evet. Ancak, Django'nun Python'u yapmaktan ziyade çözmesi biraz daha uzun sürüyor. –

    +0

    @ IgnacioVazquez-Abrams Bu durumun hala devam edeceğini biliyor musunuz? Öyleyse django belgeleri neden alıntılanan sürümü kullanıyor? –

    0

    o zaman tırnak arasına yazmalıyız.

    İlgili konular