2012-08-03 42 views
2

我有一個模型,新聞,有一個ForeignKey到另一個模型,類別。 這些類別使用​​id,name,slug和一些參數來定義。 我的分類將來永遠不會改變,所以我想知道爲什麼我要將它們存儲在數據庫中。 有沒有什麼方法可以在代碼中對它們進行硬編碼,比如使用選項或其他技術?在Django中硬編碼數據的最佳方式

回答

2

是的,選擇,存儲作爲元組元組的ID-name對和其他結構中的任何其他參數。

CATEGORIES = (
    (1, "Some category"), 
    (2, "Another category"), 
) 

CATEGORIES_PARAMS = { 
    1: {'slug': 'param_value'}, 
    2: {'slug': 'another_value'}, 
} 


class News(models.Model): 
    category = models.IntegerField("category", choices=CATEGORIES) 
    ... 

,那麼你可以使用其他PARAMS方式如下:

CATEGORIES_PARAMS[news_istance.category]['slug'] 

o創建簡單的包裝類:

class Category(object): 
    def __init__(self, id): 
     self.id = id 

    def __getattr__(self, attr): 
     return CATEGORIES_PARAMS[self.id][attr] 


cat = Category(news_instance.category) 
print cat.slug 
+0

'這些類別是用id,名稱,slug和一些參數來定義的'所以這是不可能的。 – Babu 2012-08-03 10:53:44

+0

我認爲這是顯而易見的如何存儲其他屬性,對不起...更新。 – yedpodtrzitko 2012-08-03 10:55:21

+0

謝謝,這解決了我的問題! – 2012-08-03 11:06:07

0

如果你打算使用創建您的新聞和分類模型之間的關係一個ForeignKey,那麼必須有一個模型類別。現在你說你的類別永遠不會改變,但如果以後需要更改,你需要重新設計你的代碼。要使用django的全套ORM功能,最好將其存儲在數據庫中並堅持設計。