Django模型中的静态对象类/键作为外键

时间:2011-05-20 00:57:35

标签: python django django-models

我在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'”

无论如何,我想我知道这个问题,我无法修复它。希望这是足够的信息。我确定我错过了一些愚蠢的东西。

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

是否可以将此类用作数据库中的外键?

没有

只有models.Model个类可以用作外键。

“外键”是一种数据库概念。

如果您想将非数据库内容作为外键,它们只是字符串或数字,而“引用”是一个简单的映射,在您的代码中管理。