【问题标题】:Setting custom SQL in django admin在 django admin 中设置自定义 SQL
【发布时间】:2010-06-09 20:48:22
【问题描述】:

我正在尝试在 django 管理员中设置proxy model。它将代表原始模型的一个子集。 models.py 中的代码:

class MyManager(models.Manager):
    def get_query_set(self):
        return super(MyManager, self).get_query_set().filter(some_column='value')

class MyModel(OrigModel):
    objects = MyManager()
    class Meta:
        proxy = True

现在我需要使用带有 JOINS 的复杂 SELECT 语句来代替 filter()。将其完全注入自定义管理器的正确方法是什么?

【问题讨论】:

    标签: python sql django-admin


    【解决方案1】:

    Django 提供了extra() QuerySet 修饰符——一个用于将特定子句注入到由 QuerySet 生成的 SQL 中的钩子。

    这可用于复杂情况,可能与一个或多个附加查询一起使用。

    【讨论】:

      【解决方案2】:

      如果你想在 MyModel.objects raw 中进一步使用 ORM,SQL 是没有办法的。在原始 SQL 的情况下,提供了一个迭代器。

      您无法在 MyModel().objects 上进行任何链接作为过滤器、排除等。如果可以在管理员中进行,例如过滤将无法在其中工作。如果您需要此功能,您唯一的选择就是不在 manager 的 get_query_set 方法中使用原始 sql。

      我不知道 Manager.raw 是否可以在管理员中使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        • 2012-02-27
        • 2012-03-05
        • 1970-01-01
        • 2016-04-29
        • 2014-09-08
        相关资源
        最近更新 更多