Django-查询过滤器,具有外来关系

时间:2017-05-06 18:35:38

标签: mysql sql django django-models django-views

我在使用MySQL数据库的Django中遇到了一个查询问题,由于我是新手,我遇到了解决问题。

我有2个型号,区域和表格。 区域可能有1个或多个与之关联的表单,因此它与表单具有外来关系:

form = models.ManyToManyField(Form)

在我的一个Django Views中,我希望从数据库中获取所有与#34;无区域"(即不与任何区域相关联)的表单,并在模板中使用它们。

例如,如果我像这样查询数据库(轮询是应用程序名称):

SELECT `polls_area_form`.`id`,
    `polls_area_form`.`area_id`,
    `polls_area_form`.`form_id`
FROM `myproject`.`polls_area_form`;

我明白了:

  

id area_id form_id

     

1 1 1

     

2 1 3

     

3 2 3

显示在此示例场景中,区域1与表单1和3相关联。区域2与表单3相关联。因此,我在此处由于未与任何区域关联而需要检索表单2。

在我的视图中,在一个简单的情况下,有人想要检索所有表单,无论如何,我只需使用all_forms = Form.objects.filter()(Python),然后使用它来呈现我对请求的响应。

我无法弄清楚在这种情况下过滤器应该是什么,或者在这里是否需要实际的SQL语句。

通过阅读Django文档,我觉得我可能需要在过滤器之后使用.exclude(some rule),但我不知道它的规则是什么样的。

2 个答案:

答案 0 :(得分:1)

我认为你应该能够做到

ThreeDeeTouch.watchForceTouches(function(result) {
    console.log("force touch % " + result.force); // 84
    console.log("force touch timestamp " + result.timestamp); // 1449908744.706419
    console.log("force touch x coordinate " + result.x); // 213
    console.log("force touch y coordinate " + result.y); // 41
  });

假设您的区域类名为Form.objects.filter(area=None) 并且尚未添加自定义Area

Read more here

答案 1 :(得分:1)

你可以试试这个。

Form.objects.filter(area__isnull=True)