2016-02-08 88 views
0

情況很簡單。存儲自定義值而不是外鍵的最佳做法是什麼?

class EventType(models.Model): 
    name = models.CharField() 

class Event(models.Model): 
    ... 
    event_type = models.ForeignKey('EventType') 

有必要給一個機會定製event_typeCharField進入。 EventType課程之所以分開,是因爲在該領域會有一些查詢。並且對於ForeignKey條目(不是自定義值),查找將僅爲

總結:有沒有更好的解決方案來存儲自定義event_type比聲明一個aditional領域custom_event_type = models.CharField()

+1

它不清楚你在問什麼......有沒有什麼能阻止你根據需要創建一個新的事件類型?.. – Sayse

+0

@Sayse沒有什麼東西可以停止創建,我認爲創建額外的對象會混亂查找時間,但我認爲建議答案可以訣竅。 –

+0

我不同意,但後來我不明白一個額外的布爾菲爾德甚至適用於這個問題,據我瞭解。 – Sayse

回答

3

你仍然可以保存所有的事件類型與型號相同,但使用一個額外的字段來告訴你是否要包括在搜索結果中的EventType

class EventType(models.Model): 
    name = models.CharField() 
    include_in_search = models.BooleanField() 

class Event(models.Model): 
    ... 
    event_type = models.ForeignKey('EventType') 

如果創建排序數據庫索引include_in_search然後通過name,我敢打賭你真的不會注意到查找時間有任何不同。

您沒有編寫所需的所有規格,但可能需要將name字段設置爲唯一或甚至將其用作主鍵。

相關問題