将查询转换为Django ORM代码

时间:2017-04-13 23:01:37

标签: django postgresql django-models orm

我想执行此查询以获取与表auth_group_permissions关联的所有组的ID。

package javaapplication1;

import java.util.InputMismatchException;
import java.util.Scanner;


public class JavaApplication1 {

  public static void main(String[] args) {
    Intro();
    System.out.println("Your answer: "+getAnswer());
  }
  private static void Intro() {
    System.out.println("Hello this program adds 2 integers together and catches errors.");
    getAnswer();
  }
  private static int getAnswer() throws InputMismatchException {
    Scanner scanner = new Scanner(System.in);
    try {
      System.out.println("Please input a number");
      int num1 = scanner.nextInt();
      System.out.println("Please input a second number");
      int num2 = scanner.nextInt();
      return num1+ num2;
    } catch (InputMismatchException exp) {
      System.out.println("Exception thrown");
      return 0;
    }
  }
}

2 个答案:

答案 0 :(得分:0)

模型GroupPermission通过ManyToMany字段permissions相互连接。请参阅source

基于我在互联网上找到的信息,根据我记得的信息,你需要做下一个:

from django.contrib.auth.models import Group, Permission

grouped_permissions = Permission.objects.order_by().distinct('group_id')
your_ids = Group.objects.filter(permissions__group_id__in=grouped_permissions).values_list('id', flat=True)

答案 1 :(得分:0)

这是最终的正确答案。

grouped_permissions = Permission.objects.filter().order_by().distinct().values_list('group__id',flat=True) 
your_ids = Group.objects.filter(id__in = grouped_permissions)