Joh*_*tta 8 python django django-models
在django中扩展站点模型的最佳方法是什么?创建一个新模型和ForeignKey网站还是有另一种方法可以让我继承Site模型?
我更喜欢子类化,因为在关系上我更舒服,但我担心它对内置管理员的影响.
我只是使用了我自己的Site子类并为它创建了一个自定义管理员.
基本上,当您在django中对模型进行子类化时,它会创建指向父模型的FK,并允许透明地访问父模型的字段 - 就像您在pyhon中访问父类属性一样.内置管理员不会受到任何影响,但您必须取消注册Sites ModelAdmin并注册您自己的ModelAdmin.
从 Django 2.2 开始,仍然没有Site像User. 现在最好的方法是创建新实体并将参数放在那里。如果您想利用现有站点支持,这是唯一的方法。
class SiteProfile(models.Model):
title = models.TextField()
site = models.OneToOneField(Site, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
您必须为SiteProfile. 然后添加一些SiteProfile 带有链接的记录Site。site.siteprofile.title现在,您可以在任何可以从模型访问当前站点的地方使用。