无论django admin中的站点如何,都显示所有模型实例

时间:2014-12-02 21:15:00

标签: python django django-sites

我启用了网站框架(包括中间件)并设置了两个网站(ID = 1和ID = 2)。我的一个模型使用Site的外键。为了论证,让我们说它看起来像这个

class Person(models.Model):
    name = models.CharField(max_length=20)
    site = models.ForeignKey(Site)
    on_site = CurrentSiteManager()

在我的settings.py中,我有SITE_ID = 1

如果我在管理员屏幕中创建人员实例,并将其网站设置为ID = 2的网站,则会创建该网站,但它会隐藏在当前管理屏幕中。

这对我来说似乎违反直觉。我想用我的单个django管理界面来管理我的两个网站。在我的list_display中,我有' site',所以如果它向我显示了所有实例,我就知道它与哪个网站有关。

是否有某种方法可以确保在管理屏幕中显示我的模型的所有实例,而不管站点ID?

我不想登录两个单独的管理URL来管理所有模型实例。

1 个答案:

答案 0 :(得分:1)

你实际上不需要CurrentSiteManager,只需通过ForeignKey将模型连接到Site Model;

from django.contrib.sites.models import Site
class Person(models.Model):
   name = models.CharField(max_length=20)
   site = models.ForeignKey(Site)
   on_site = models.ForeignKey(Site,related_name="site_users")

在管理员中,您会看到一个下拉列表,可选择Person应属于哪个网站。

不要忘记迁移模型,因为您正在更改架构