我在Django / Python的新领域。我正在构建一个用户从可用服务列表中选择的站点,然后输入有关服务的信息。
我不想将服务列表保留在数据库中,因为这确实是更多的站点配置信息而不是用户信息。所以我将它们设置为对象类(由朋友推荐)
class Service(object):
def __init__(self, name, sections, link, enabled=True):
self.name = name
self.link = link
self.sections = sections
self.enabled = enabled
SERVICES = {
'SERVICE1': ArtistService(
'Service Name',
['Section Name 1','Section Name 2',],
'http://www.service.com',
),
是否可以将此类用作数据库中的外键?我想通过模板连接从类中检索有关服务的一些信息。例如:
{% for s in user_activated_services %}
{{ s.service.name }}
{% endfor %}
但它没有用,因为我只是在user_activated_services模型中将密钥保存在CharField中:
class ActivatedServices(models.Model):
user_page = models.ForeignKey(Page)
service = models.CharField(max_length=20, choices=[(k, s.name) for k, s in userservices.services.SERVICES.iteritems()])
当我尝试用外键替换时,我得到一个错误:“ForeignKey的第一个参数必须是模型,模型名称或字符串'self'”
无论如何,我想我知道这个问题,我无法修复它。希望这是足够的信息。我确定我错过了一些愚蠢的东西。
提前致谢。
答案 0 :(得分:1)
是否可以将此类用作数据库中的外键?
没有
只有models.Model
个类可以用作外键。
“外键”是一种数据库概念。
如果您想将非数据库内容作为外键,它们只是字符串或数字,而“引用”是一个简单的映射,您在您的代码中管理。