【问题标题】:Django Select and Display Model Inlines Dynamically with multiple select drop down boxDjango 使用多选下拉框动态选择和显示模型内联
【发布时间】:2020-07-31 11:34:34
【问题描述】:

这是我的管理页面的样子:

这是管理页面的链接: https://i.stack.imgur.com/Ghq5f.png

随着我添加更多模型,我将拥有更多与 Selector 相关的外键,并且选择器模型的每个实例都不需要所有内联。为了简化管理页面,我希望能够选择和选择要显示的内联。有没有人对我如何简化我的页面并有一个下拉多选框来动态显示内联有任何建议?

这是我的 models.py 文件:

    from django.db import models
class Selector(models.Model):
    lst = [
        ("Model1", "Model1"),
        ("Model2", "Model2"),
        ("Model3", "Model3"),
        ("Model4", "Model4"),
    ]
    choice = models.CharField("Choices", choices=lst, max_length=40)



class Model1(models.Model):
    select = models.ForeignKey(Selector, on_delete=models.CASCADE)
    param1 = models.IntegerField("Input 1")
    param2 = models.IntegerField("Input 2")
    param3 = models.IntegerField("Input 3")


class Model2(models.Model):
    select = models.ForeignKey(Selector, on_delete=models.CASCADE)
    param1 = models.IntegerField("Input 1")
    param2 = models.IntegerField("Input 2")
    param3 = models.IntegerField("Input 3")


class Model3(models.Model):
    select = models.ForeignKey(Selector, on_delete=models.CASCADE)
    param1 = models.IntegerField("Input 1")
    param2 = models.IntegerField("Input 2")
    param3 = models.IntegerField("Input 3")


class Model4(models.Model):
    select = models.ForeignKey(Selector, on_delete=models.CASCADE)
    param1 = models.IntegerField("Input 1")
    param2 = models.IntegerField("Input 2")
    param3 = models.IntegerField("Input 3")

这是我的 admin.py 文件:

from django.contrib import admin
from .models import Model1, Model2, Model3, Model4, Selector


class Model1Admin(admin.TabularInline):
    model = Model1
    extra = 1


class Model2Admin(admin.TabularInline):
    model = Model2
    extra = 1


class Model3Admin(admin.TabularInline):
    model = Model3
    extra = 1


class Model4Admin(admin.TabularInline):
    model = Model4
    extra = 1


class SelectorAdmin(admin.ModelAdmin):
    model = Selector
    inlines = [Model1Admin, Model2Admin, Model3Admin, Model4Admin]


admin.site.register(Selector, SelectorAdmin)

【问题讨论】:

    标签: django django-models django-forms django-views django-admin


    【解决方案1】:

    试试

    class Model1Admin(admin.StackedInline):
    model = Model1
    extra = 1
    

    【讨论】:

    • 欢迎来到 StackOverflow!请阅读How to Answer。仅代码的答案可能对 OP 或此答案的未来查看者没有太大帮助。好的答案包括对 为什么 这个答案有效以及 OP 出了什么问题 的一些解释
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多