我有一个应用程序应该为不同的网站提供服务。 Sites framework已经在那里,但在这个应用程序中一些网站共享某些资产(CSS等)。因此,我希望有一个与Site
具有一对多关系的附加模型(例如Asset
)。将字段添加到网站模型
我相信这基本上归结为将一个自定义字段添加到sites.models.Site
模型。可能吗?怎么样?
我有一个应用程序应该为不同的网站提供服务。 Sites framework已经在那里,但在这个应用程序中一些网站共享某些资产(CSS等)。因此,我希望有一个与Site
具有一对多关系的附加模型(例如Asset
)。将字段添加到网站模型
我相信这基本上归结为将一个自定义字段添加到sites.models.Site
模型。可能吗?怎么样?
当您创建的网站比如一个外键的Site
模型,可以will be available自动:
site.asset_set.all()
你甚至可以为更多的可读性提供related_name
到backward relation:
class Asset(models.Model):
site = models.ForeignKey(Site, related_name='assets')
...
site.assets.all()
这就是我假装的反向关系。然而,这个特定的公式会返回这个错误:“core.Asset.site:(fields.E300)Field定义了一个与模型'Site'的关系,它或者没有安装,或者是抽象的。” – 2015-04-03 09:05:39
当前版本的django默认不启用'Sites'框架。你必须自己启用它:https://docs.djangoproject.com/en/1.7/ref/contrib/sites/#enabling-the-sites-framework – catavaran 2015-04-03 09:26:24
好的,我发现该错误的来源,'Django .contrib.sites'应用程序在'settings.py'中被注释掉了。 – 2015-04-03 09:27:14
为什么要该字段属于Site模型?只需将该字段添加到资产,然后从网站您可以访问反向关系。 – petkostas 2015-04-03 08:36:17
这将是相反的关系。我需要从“资产”到“网站”的一对多关系,即可以在不同的网站中使用相同的资产。 – 2015-04-03 09:03:36