在表单标签上创建工具提示,其中包含来自django-admin中不同模型的内容

时间:2014-11-10 16:14:30

标签: django django-forms django-admin

我有两个模型:PrimaryEntitySecondaryEntity。当我基于PrimaryEntity呈现表单时,我希望在某些表单标签上有一个工具提示,显示SecondaryEntity中特定列的数据。

以下是模型示例:

class PrimaryEntity(models.Model):
    some_field1 = models.TextField(default=None, blank=False, null=True)
    some_field2 = models.CharField(default=None, max_length=255, blank=True, null=True)
    some_field3 = models.CharField(default=None, max_length=255, blank=True, null=True)
    some_field4 = models.CharField(default=None, max_length=255, blank=True, null=True)

class SecondaryEntity(models.Model):
    field1 = models.TextField(default=None, blank=False, null=True)
    field2 = models.CharField(default=None, max_length=255, blank=True, null=True)
    field3 = models.CharField(default=None, max_length=255, blank=True, null=True)
    field4 = models.CharField(default=None, max_length=255, blank=True, null=True)

因此,当我基于change_form.html呈现PrimaryEntity时,我想启用PrimaryEntity.some_field1的标签,以便在SecondaryEntity.field1中呈现数据。工具提示。

所以问题是:

  • 如何在一个ModelAdmin中包含2个模型?如何使用数据操作标签?

我应该坚持使用django管理平台,还是这类任务最适合作为自定义管理页面?

更新

或者制作一个并排的字段也可以完成工作,而不是工具提示方法。

换句话说:

 ______________________________ ______________________________
|                              |                              |
|                              |                              |
|    SecondaryEntity.field1    |  PrimaryEntity.some_field1   |
|                              |                              |
|______________________________|______________________________|

SecondaryEntity.field1在表单中只读。

1 个答案:

答案 0 :(得分:0)

问题是,两个模型之间没有关系。 PrimaryEntity中应该有一个OneToOneField或ForeigkKey字段。遵循它的外观的简短版本。

class PrimaryEntity(models.Model):
    some_field1 = models.TextField(default=None, blank=False, null=True)

class SecondaryEntity(models.Model):
    field1 = models.TextField(default=None, blank=False, null=True)
    primary_entity = models.OneToOneField(PrimaryEntity)
    @property
    def some_field1(self):
        return self.primary_entity.some_field1

然后您可以在管理员中显示该属性。只需将其添加到list_display。