我在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 回答
没有 .
只有
models.Model
类可以用作外键 .“外键”是一种数据库概念 .
如果您希望将非数据库事物作为外键,它们只是字符串或数字,"reference"是一个简单的映射,在您的代码中管理 you .