我有一个模型,新闻,有一个ForeignKey到另一个模型,类别。 使用id,name,slug和一些其他参数定义类别。 我的类别将来永远不会改变,所以我想知道为什么要将它们存储在数据库中。 有没有办法在代码中对它们进行硬编码,比如使用选择或任何其他技术?
答案 0 :(得分: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)
...
然后您可以按照以下方式使用其他参数:
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
答案 1 :(得分:0)
如果您打算使用ForeignKey在News和Category模型之间创建关系,则必须有一个模型Category。现在你说你的类别永远不会改变,但如果以后需要更改它们,你需要重新设计你的代码。要使用django的全套ORM功能,最好将其存储在数据库中并坚持设计。