【问题标题】:Show all model instances regardless of site in django admin无论在 django admin 中的站点如何,都显示所有模型实例
【发布时间】:2014-12-03 05:28:13
【问题描述】:

我已启用站点框架(包括中间件)并设置了两个站点(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 中,我有“站点”,所以如果它向我显示所有实例,我就知道它与哪个站点相关。

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

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

【问题讨论】:

    标签: python django django-sites


    【解决方案1】:

    您实际上不需要CurrentSiteManager,只需通过 ForeignKey 将模型连接到站点模型即可;

    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 应属于哪个站点。

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

    【讨论】:

    • 谢谢。我刚刚注释掉了CurrentSiteManager,现在它们出现了。老实说,不确定为什么会这样。我想我需要多阅读一些文档。
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2018-02-07
    • 2018-10-28
    • 2021-04-11
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多