这个问题是不言自明的。我有一个数据库,我知道其中有一个名为 的表Customer,但该表不存在于models.py. 因此,我不能简单地执行以下操作:
customers = Customer.objects.filter(age__gte=25)
Run Code Online (Sandbox Code Playgroud)
是否可以编写此查询并获取数据,而无需为其创建类models.py并迁移整个项目?
您需要创建一个类,但不需要让Django ORM 通过迁移来管理它。您可以通过添加元选项managed = False[ docs ] 来做到这一点。
为了节省您的时间和麻烦,Django 提供了一个管理命令inspectdb[ docs ],它将为您输出一个类定义,包括在数据库中找到的所有字段。
python manage.py inspectdb [table_name]
然后您可以使用它,并设置元选项(managed = False不过我相信它默认为 )。它看起来像这样:
class Customer(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
age = models.IntegerField(...)
name = models.CharField(...)
date_joined = models.DateField(...)
class Meta:
managed = False
db_table = 'someTableName'
Run Code Online (Sandbox Code Playgroud)
现在您可以导入该类并运行:
customers = Customer.objects.filter(age__gte=25)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |