Django连表查询

user_profile的models

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

from django.contrib.auth.models import AbstractBaseUser

class CommonUser(AbstractBaseUser):
    username = models.CharField('username', max_length=20,
                                unique=True, db_index=True)
    email = models.EmailField('email address', unique=True)
    joined = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    USERNAME_FIELD = 'username'
    def __unicode__(self):
        return self.username

Password的models

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

from django.db import models
import datetime

from user_profile.models import CommonUser
# Create your models here.

class PasswordItems(models.Model):
    host_name = models.CharField(max_length=100)
    port = models.CharField(default='', max_length=10)
    password = models.CharField(max_length=100)
    update_time = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return self.host_name

class PasswordGroup(models.Model):
    group_name = models.CharField(max_length=10, unique=True)
    passwordItems = models.ManyToManyField(PasswordItems)

    def __unicode__(self):
        return self.group_name


class Manager(models.Model):
    """
    管理员权限
    """
    user = models.ForeignKey(CommonUser)
    group = models.ManyToManyField(PasswordGroup)

    def __unicode__(self):
        return self.user.username

查询所有Group属于Default的用户

>>> Manager.objects.filter(group__group_name__contains='Default')
<QuerySet [<Manager: lilei>, <Manager: lileikf2016>]>