2011-02-25 30 views
0

通過異物會與非Django的命名約定的傳統數據庫。如果我有以下(削減)型號:我如何通過一個ForeignKey的db_column字段進行篩選,而不在Django

class Registration(models.Model): 
    projectId=models.IntegerField(primary_key=True) 

class Application(models.Model): 
    applicationId=models.IntegerField(primary_key=True) 
    registration=models.ForeignKey(Registration,db_column='projectId') 

ForeignKey實例導致要在Applicationregistration_id創建一個屬性,但這既不是該領域的正確名稱(我有一個黑客來解決這個問題),也不能用於QuerySet

是否有某種方式使用應用程序模型上的ForeignKey提供的id字段,而不必通過註冊來引用它?


即,我寫很多代碼,如:

Application.objects.get(projectId=1234) 


而不想將它寫出來的:

Application.objects.get(registration__projectId=1234) 

甚至

Application.objects.get(registration__pk=1234) 


我稍感意外的是:

Application.objects.get(registration_id=1234) 

不工作...


另外請注意,我試圖定義id列作爲一個字段,以及其對工作的查詢集外鍵,但插入抱怨試圖插入同一列兩次:

class Application(models.Model): 
    ... 
    projectId=models.IntegerField() 
    ... 

回答

0

你試過了嗎?

Application.objects.get(registration=1234) 
+0

謝謝Wogan,並不完全是我想要做的(Application.objects.get(專案編號= 1234)),但可能是因爲這是我所能得到什麼東西我不知道我能做到。 – 2011-03-09 00:40:33

0

我認爲只是在做Application.objects.registration.get(projectId=1234)應該做你想做的。

+0

謝謝馬哈茂德,我沒有意識到我這樣做。不過,我將另一個標記爲答案,因爲我認爲這將返回QuerySet相對於註冊。例如: Application.objects.registration.filter(projectId__in = [1,2,3])ORDER_BY( '的applicationID') 是行不通的。?儘管知道它仍然非常有用! – 2011-03-09 00:38:06

相關問題