我在django教程书中了解了数据库概念。我对从sql数据库服务器中的表中获取数据有一些疑问。在django书中,他们解释了如下内容以过滤数据,如下所示
Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same')
这里Entry是类名称,它在models.py文件中定义,如下所示
models.py
class Entry(models.Model):
blog = models.ForeignKey(Blog)
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.DateField()
mod_date = models.DateField()
authors = models.ManyToManyField(Author)
n_comments = models.IntegerField()
n_pingbacks = models.IntegerField()
rating = models.IntegerField()
def __str__(self): # __unicode__ on Python 2
return self.headline
在上述方法中,没有提及要修改的表。然后在下面的查询中将修改哪个表。
Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same')
如果我问错了,请原谅我。谁能消除我的疑虑。
从表名称的文档中:
为了节省您的时间,Django会自动从您的模型类和包含它的应用程序的名称中派生数据库表的名称。通过将模型的“应用程序标签”(即您在manage.py startapp中使用的名称)连接到模型的类名称,并在其之间加下划线,来构造模型的数据库表名称。
例如,如果您有一个应用程序书店(由manage.py startapp书店创建),则定义为Book类的模型将具有一个名为bookstore_book的数据库表。
要覆盖数据库表名称,请在类Meta中使用db_table参数。
如果您使用列出的API,则无需知道表名:
Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same')
由于您引用了模型,Django将知道要更新哪个表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句