2014-01-16 34 views
1

我有2國外申請點的模型相同的模式:如何在django模型中排除等列?

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代碼不等於:使用QF

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

你爲什麼這樣做? –

+0

哦,我真正的問題是關於產品庫存的位置,我想找到產品返回給供應商。我只是簡化了原來的問題。 –

回答

3

你可以做到這一點:

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

Q有助於建立not equal條件,而F幫助引用另一個模型領域。

+0

您的解決方案工作。非常感謝。 –

1

如果你想導入一個較少的東西,這也可以不用Q對象來完成。

from django.db.models import F 

Student.objects.exclude(old_school=F('new_school')) 

在我的測試中,它在後端生成了相同的MySQL。