是否可以使用 Django 的 ORM 查询表而无需在模型中为其创建类?

dar*_*rse 2 django django-orm

这个问题是不言自明的。我有一个数据库,我知道其中有一个名为 的表Customer,但该表不存在于models.py. 因此,我不能简单地执行以下操作:

customers = Customer.objects.filter(age__gte=25)
Run Code Online (Sandbox Code Playgroud)

是否可以编写此查询并获取数据,而无需为其创建类models.py并迁移整个项目?

Gre*_*eka 5

您需要创建一个类,但不需要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)