2017-01-20 73 views
0

我有兩個類模型是這樣的:使用select_related爲逗號分隔場

class Problem(models.Model): 
    owner = models.ForeignKey(User) 
    services = models.CommaSeparatedIntegerField(max_length=200) 

class Services(models.Model): 
    name = models.CharField(max_length=50) 
    ... 

正如你在問題模型看我保持服務的ID的逗號分隔領域。例如要解決這個問題,我們應該做這個服務:「1,2,3」。我想向用戶顯示問題和相關服務的詳細信息。要做到這一點,我應該加入問題服務表,但我不知道如何。考慮一下,我的超級管理員定義的服務數量有限。例如我有150個服務。

回答

0

使用ManyToManyField,這正是它們的用途。

+0

我不想使用ManyToManyField,因爲當我可以使用逗號分隔的字段來保存服務,爲什麼我使用另一個表? –

+0

Duh - 這樣就可以將它用於連接,select_related等等。如果你想讓Django和數據庫爲你做你的工作,你必須告訴他們一些事情是多對多的關係。爲什麼200字符長度的字段必須被解釋爲逗號分隔的整數比另一個表更好? – RemcoGerlich

+0

所以我們在django中沒有逗號分隔關係字段? 所以你建議我在這種情況下使用另一張桌子? –

0

使用包含ForeignKey的服務。因此,您可以將所有服務與一個問題聯繫起來

+0

我的超級管理員定義的服務數量有限。例如150個服務。在問題表中,我使用這個服務來了解女巫服務應該如何解決問題 –

+0

@ user2141833你是什麼意思。您仍然可以通過使用'choice_set.all'訪問所有與問題相關的服務。# – Bobby

+0

@擁有一個分隔的整數字段絕對不是「Django的方式」。您可以使用外鍵獲得任何信息 – Bobby