【问题标题】:Django admin inlines to parent modelDjango admin 内联到父模型
【发布时间】:2017-10-26 18:30:18
【问题描述】:

我有几个相关的模型。在 django admin 中我想创建Appeal

从模型中可以看出,我需要从Assignment 列表中进行选择,但就我而言,大多数情况下,它需要从头开始创建。如果我点击“+”,Django 管理员会提供这个选项

然后,在Assigment中,我需要选择ClientProfile,但同样,在大多数情况下,我需要再次创建它,这意味着我将点击“+”

但是从我的模型可以看出,ClientProfile 指的是用户,而且更多的时候,它也需要重新创建,所以再次按下“+”

而在这种情况下最可怕的是User引用了Address的模型。

问题是,有没有可能做一些事情让你不必按3-5次“+”?每次按压都伴随着开场弹,不是很方便。

我在考虑表单或模型本身的继承,创建了几个抽象模型,我也想到了WizardView,我无法集成到Django-admin中。

我很困惑,不知道如何正确地做。

问题是我构建的模型架构不正确? 我不会说是这样,我喜欢模型之间的关联。

class Appeal(Base):
   ...
   assigment = models.ForeignKey(Assignment, null=True)
   ...


class Assignment(Base):
    ...
    client = models.ForeignKey(ClientProfile, null=True)
    ...
    address = models.ForeignKey(Address, null=True)
    ...


class ClientProfile(Base):
    ...
    user = AutoOneToOneField(settings.AUTH_USER_MODEL, null=True)
    ...


@python_2_unicode_compatible
class User(AbstractUser):
    ...
    phone_number = models.ManyToManyField(PhoneNumber)
    ...
    address = models.ForeignKey(Address, null=True)
    ...

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    可以在 Django 管理中向相关模型添加内联,这可以从 documentation 中读取。但是 Django admin 并不总是可靠的,因此为了满足您的要求,最好拥有自己设计的管理面板。

    【讨论】:

    • 我当然知道内联。但我需要相反。我需要给孩子添加父母。在我指示在第一个表中创建条目的示例中,我需要单击 5 个加号,并填写 5 个表格。我想尽量减少这种情况,无论是通过覆盖表单,还是 WizzardForms 中的 SessionView
    猜你喜欢
    • 2012-04-19
    • 2010-12-25
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2019-07-29
    相关资源
    最近更新 更多