如何在django中扩展Site模型?

Joh*_*tta 8 python django django-models

在django中扩展站点模型的最佳方法是什么?创建一个新模型和ForeignKey网站还是有另一种方法可以让我继承Site模型?

我更喜欢子类化,因为在关系上我更舒服,但我担心它对内置管理员的影响.

fes*_*est 8

我只是使用了我自己的Site子类并为它创建了一个自定义管理员.

基本上,当您在django中对模型进行子类化时,它会创建指向父模型的FK,并允许透明地访问父模型的字段 - 就像您在pyhon中访问父类属性一样.内置管理员不会受到任何影响,但您必须取消注册Sites ModelAdmin并注册您自己的ModelAdmin.

  • 这些东西怎么样?他们还在工作吗?http://docs.djangoproject.com/en/dev/ref/contrib/sites/#how-django-uses-the-sites-framework (5认同)

igo*_*igo 5

从 Django 2.2 开始,仍然没有SiteUser. 现在最好的方法是创建新实体并将参数放在那里。如果您想利用现有站点支持,这是唯一的方法。

class SiteProfile(models.Model):
    title = models.TextField()
    site = models.OneToOneField(Site, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

您必须为SiteProfile. 然后添加一些SiteProfile 带有链接的记录Sitesite.siteprofile.title现在,您可以在任何可以从模型访问当前站点的地方使用。