2015-04-03 134 views
0

我有一个应用程序应该为不同的网站提供服务。 Sites framework已经在那里,但在这个应用程序中一些网站共享某些资产(CSS等)。因此,我希望有一个与Site具有一对多关系的附加模型(例如Asset)。将字段添加到网站模型

我相信这基本上归结为将一个自定义字段添加到sites.models.Site模型。可能吗?怎么样?

+0

为什么要该字段属于Site模型?只需将该字段添加到资产,然后从网站您可以访问反向关系。 – petkostas 2015-04-03 08:36:17

+0

这将是相反的关系。我需要从“资产”到“网站”的一对多关系,即可以在不同的网站中使用相同的资产。 – 2015-04-03 09:03:36

回答

2

当您创建的网站比如一个外键的Site模型,可以will be available自动:

site.asset_set.all() 

你甚至可以为更多的可读性提供related_namebackward relation

class Asset(models.Model): 
    site = models.ForeignKey(Site, related_name='assets') 

... 

site.assets.all() 
+0

这就是我假装的反向关系。然而,这个特定的公式会返回这个错误:“core.Asset.site:(fields.E300)Field定义了一个与模型'Site'的关系,它或者没有安装,或者是抽象的。” – 2015-04-03 09:05:39

+1

当前版本的django默认不启用'Sites'框架。你必须自己启用它:https://docs.djangoproject.com/en/1.7/ref/contrib/sites/#enabling-the-sites-framework – catavaran 2015-04-03 09:26:24

+0

好的,我发现该错误的来源,'Django .contrib.sites'应用程序在'settings.py'中被注释掉了。 – 2015-04-03 09:27:14