Python 如何列出非';t在其他表中为fk
我有一个表Python 如何列出非';t在其他表中为fk,python,django,Python,Django,我有一个表用户,用户可以在学生表或教师表中 如何仅列出不在这两个表中的用户 表名是葡萄牙语的,但它们分别对应于用户、教师和学生 qs = models.Users.objects.all('') 因此,user\u listvar拥有不在另外两个表中的所有用户添加与用户、学生和教师相关的代码model@NeErAjKuMaR汉克斯补充道,但这对我的工作不起作用,我不知道你是否听说过Django autocomplete light,我用这个来做一个自动完成,用户不是老师或学生,我得到了错误。
用户
,用户可以在学生
表或教师
表中
如何仅列出不在这两个表中的用户
表名是葡萄牙语的,但它们分别对应于用户、教师和学生
qs = models.Users.objects.all('')
因此,
user\u list
var拥有不在另外两个表中的所有用户添加与用户、学生和教师相关的代码model@NeErAjKuMaR汉克斯补充道,但这对我的工作不起作用,我不知道你是否听说过Django autocomplete light,我用这个来做一个自动完成,用户不是老师或学生,我得到了错误。不支持+:'QuerySet'和'QuerySet'NeErAj的操作数类型,我在代码中做了一些修改,成功了,我将users=list(set(professor+aluno)),改为users=chain(professor,aluno),效果很好,编辑你的帖子,让其他人可以看到你非常有用的答案,谢谢你的朋友,如果可能的话,多解释一下你的代码,我不知道你在那里做了什么。
class Usuario(AbstractBaseUser,PermissionsMixin):
Nome = models.CharField('Nome Completo', max_length=100)
User = models.CharField('Usuario',max_length=20, unique=True)
email = models.EmailField('Email',unique=True)
Data_Associacao = models.DateTimeField(default=timezone.now)
is_active = models.BooleanField('Ativo',default=True)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["Nome", "User"]
objects = UserManager()
def __str__(self):
return self.Nome
def get_short_name(self):
return self.User
class Professor(models.Model):
Matricula = models.CharField(primary_key=True, max_length=8)
Usuario = models.OneToOneField(settings.AUTH_USER_MODEL)
Data_Nascimento = models.DateField('Data de Nascimento')
Endereco = models.TextField(max_length=200)
def __str__(self):
return self.Usuario.Nome
class Aluno(models.Model):
Matricula = models.CharField(primary_key=True, max_length=8)
Usuario = models.OneToOneField(settings.AUTH_USER_MODEL)
Data_Nascimento = models.DateField('Data de Nascimento')
Endereco = models.TextField(max_length=200)
Turma = models.ForeignKey(Turma)
def __str__(self):
return self.Usuario.Nome
def clean(self, *args, **kwargs):
try:
super(Aluno, self).save(*args, **kwargs)
except ValidationError:
raise ValidationError("Não há vagas nesta turma !")
professor = Professor.objects.values_list('Usuario_id', flat=True).all()
aluno = Aluno.objects.values_list('Usuario_id', flat=True).all()
users = list(set(professor + aluno))
user_list = Usuario.objects.exclude(pk__in=users)