首页 文章

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

提问于
浏览
0

我在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 回答

  • 1

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

    没有 .

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

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

    如果您希望将非数据库事物作为外键,它们只是字符串或数字,"reference"是一个简单的映射,在您的代码中管理 you .

相关问题