我想在一个管理页面中显示几个模型。这是我的模特:
class Server(models.Model):
type = models.CharField(max_length=44, choices=TYPES)
number = models.CharField(max_length=3)
environment = models.CharField(max_length=7, choices=ENVIRONMENTS)
location = models.CharField(max_length=3, choices=LOCATONS)
cpu = models.PositiveSmallIntegerField()
ram = models.PositiveIntegerField()
os = models.CharField(max_length=24, choices=OSs, default='CentOS 6.3')
eth0_ip = models.IPAddressField(unique=True)
eth0_mac = models.CharField(max_length=17, unique=True, null=True,
blank=True)
confluence_page = models.URLField(null=True, blank=True)
class Meta:
abstract = True
def __unicode__(self):
return "%s%s.%s" % (self.type, self.number, self.environment)
class Real(Server):
manufacturer = models.CharField(max_length=20, choices=MANUFACTURERS_REAL)
rack = models.CharField(max_length=6, null=True, blank=True)
rack_u = models.PositiveSmallIntegerField(null=True, blank=True)
serial_num = models.CharField(max_length=8, unique=True, null=True,
blank=True)
class Virtual(Server):
manufacturer = models.CharField(max_length=20,
choices=MANUFACTURERS_VIRTUAL)
host_id = models.ForeignKey(Real)
我想知道的是,无论如何我都要创建/扩展/任何允许查看来自两个数据库的所有对象的管理界面。例如,我可以进入管理员,然后当我点击应用程序名称时,我得到两个数据库的change_list,当我选择一个特定的对象时,说一个虚拟,我将获得管理界面来创建或更改虚拟对象。 / p>
如果我不清楚,请告诉我,我会尽我所能以不同的方式更清楚地解释。
答案 0 :(得分:0)
如果您要显示的父模型类型有一个公共外键,Django admin inlines会帮助您:
https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin
在您的实例中,由于Real是Server的子级,您可以为Real构建管理页面,并使用内联来查看管理员中该服务器的所有虚拟对象。