2013-07-18 160 views
1

只是偶然發現了一些傢伙代碼Django的註釋代碼

他的產品型號這樣

class Country(models.Model): 
    name = models.CharField(max_length=100) 

class TourDate(models.Model): 
    artist = models.ForeignKey("Artist") 
    date = models.DateField() 
    country = models.ForeignKey("Country") 

,並詢問這樣

ireland = Country.objects.get(name="Ireland") 
    artists = Artist.objects.all().extra(select = { 
     "tourdate_count" : """ 
     SELECT COUNT(*) 
     FROM sandbox_tourdate 
      JOIN sandbox_country on sandbox_tourdate.country_id = sandbox_country.id 
     WHERE sandbox_tourdate.artist_id = sandbox_artist.id 
     AND sandbox_tourdate.country_id = %d """ % ireland.pk, 
    }).order_by("-tourdate_count",) 

我的問題是,爲什麼他有這樣sandbox_tourdate下劃線,但它不在型號字段 是否像某種僞字段自動創建?

回答

1

sandbox_tourdate不是字段的名稱,它是表的名稱。 Django的命名約定是使用appname_modelname作爲表名,儘管這可以被覆蓋。在這種情況下,我猜這個應用程序被稱爲「沙箱」。

我真的不知道爲什麼這個人使用了原始查詢,這很容易用Django的ORM語法表達。