2013-07-18 124 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语法表达。