代码之家  ›  专栏  ›  技术社区  ›  Benyamin Jafari

NestedStackedInline与NestedTabularInline的区别

  •  0
  • Benyamin Jafari  · 技术社区  · 6 年前

    我用的是 嵌套的 Django项目中的模型。


    下面的代码片段是 模型.py :

    from django.db import models
    from django.db.models.deletion import CASCADE
    
    class Model_(models.Model):
        name = models.CharField(max_length=50, default="This is a model")
        frequently = models.FloatField(default=1.0)
    
        def __str__(self):
            return self.name
    
    class SubModel(models.Model):
        name = models.CharField(max_length=100)
        address = models.CharField(max_length=8, default='0x')
        model_ = models.ForeignKey(Model_, on_delete=CASCADE)
    
        def __str__(self):
            return self.name    
    
    class Metadata(models.Model):
        key = models.CharField(max_length=100)
        value = models.CharField(max_length=100)
        sub_model = models.ForeignKey(SubModel, on_delete=CASCADE)
    

    这是我的 管理.py 脚本:

    from django.contrib import admin
    from nested_inline.admin import NestedTabularInline, NestedStackedInline,\
        NestedModelAdmin
    from <djano-application-name>.models import Model_, SubModel, Metadata
    
    class MetadataAdmin(NestedTabularInline):
        model = Metadata
        extra = 1
    
    class SubModelAdmin(NestedStackedInline):
        model = SubModel
        inlines = [MetadataAdmin]
        extra = 1
    
    class Model_Admin(NestedModelAdmin):
        model = Model_
        inlines = [SubModelAdmin]
        list_display = ['name']
    
    admin.site.register(Model_, Model_Admin)
    

    问题:

    有什么区别 NestedStackedInline NestedTabularInline 在里面 管理.py 脚本?


    [ 注意 ]:

    版本: 蟒蛇2.7 姜戈1.11


    1 回复  |  直到 6 年前
        1
  •  2
  •   Satendra    6 年前

    如果你正在使用 django-nested-inline ,这意味着您希望在与父模型相同的页面上编辑模型,并在“管理”中使用父对象一次添加多个级别的子对象。

    Django管理只是一个普通的Django应用程序,在默认Django管理中不能有第二级的内联(嵌套表单)。

    两者的区别 NestedStackedInline NestedTabularInline 只是 布局 . 实际上,两者在幕后的工作完全相同,唯一的区别是用于渲染的模板。检查官员 docs . 因此,为项目选择一个只是界面布局方面的一个偏好问题。

    这就是为什么 嵌套堆栈行 看,模型的每个字段都在另一个字段下。

    enter image description here

    这是 雀巢白杨碱 ,模型的每个字段都在一行中,按列排列

    enter image description here