別のモデル Category への ForeignKey を持つモデル News があります。カテゴリは、id、name、slug、およびその他のいくつかのパラメーターで定義されます。私のカテゴリは今後変更されることはないので、なぜデータベースに保存する必要があるのか疑問に思っています。選択肢やその他の手法を使用するなど、コード内にハードコードする方法はありますか?
質問する
1254 次
2 に答える
3
はい、choices
: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)
...
次に、次の方法で他のパラメータを使用できます。
CATEGORIES_PARAMS[news_instance.category]['slug']
または、単純なラッパークラスを作成します。
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)
于 2012-08-03T10:50:56.087 に答える
0
ForeignKeyを使用してニュースとカテゴリモデルの間に関係を作成する場合は、モデルカテゴリが必要です。これで、カテゴリは変更されないと言っていますが、将来変更する必要がある場合は、コードを再設計する必要があります。djangoのORM機能のフルセットを使用するには、データベースに保存してデザインに固執することをお勧めします。
于 2012-08-03T10:52:08.667 に答える