python - 如何排除 Django 模型中的等列?

标签 python django django-models django-queryset

我有一个模型,其中有 2 个外部文件指向同一个模型:

class Student(models.Model):
    old_school = model.ForeignField(school)
    new_school = model.ForeignField(school)

我想找到 old_school != new_school 的学生。我试过这些:

Student.objects.all().exlude(old_school = new_school)
Student.objects.all().exlude(self.old_school = self.new_school)

但它们都不起作用。似乎模型管理器不能引用 new_school。有什么方法可以做这样的查询吗?或者我必须在 python 代码中手动检查不相等:

if student.old_school != student.new_school:
   s_list.append(student)

最佳答案

您可以使用 Q 来实现此目的和 F :

Student.objects.filter(~Q(old_school=F('new_school')))

Q 有助于构建不等于 条件,而F 有助于引用另一个模型字段。

关于python - 如何排除 Django 模型中的等列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21155788/

相关文章:

javascript - 如何在 Django 管理中选择单选按钮时隐藏/显示字段?

python - 有没有任何方法或API可用于使用python为电报机器人创建唯一的推荐链接

django - 如何在 Django 中从模型基础到派生类?

python_2_unicode_compatible 错误

python - 不同版本的 Python 中的文本格式

python 32位 float 转换

Django order_by相关集

django - 如何正确加载 Django 南迁移中的装置?

python - Django:收集用户、对象 Activity 流

python - Django聚合函数问题(Count = -number-)