4

別のモデル Category への ForeignKey を持つモデル News があります。カテゴリは、id、name、slug、およびその他のいくつかのパラメーターで定義されます。私のカテゴリは今後変更されることはないので、なぜデータベースに保存する必要があるのか​​疑問に思っています。選択肢やその他の手法を使用するなど、コード内にハードコードする方法はありますか?

4

2 に答える 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 に答える