美文网首页
Django Admin对ManyToMany字段的自定义

Django Admin对ManyToMany字段的自定义

作者: alue | 来源:发表于2022-08-13 13:23 被阅读0次

    Django admin的字段显示依靠 verbose_name__str__等属性来定义。

    但是,ManyToManyField 有些特殊。它是通过额外生成一个模型表来实现的。当然,我们可以利用 through字段,手动指定这张表,从而利用老办法手动控制admin中的显示。

    更多的时候,我们并不指定 through字段,而是依靠Django自动生成,这样更加省事,但也带来了困惑,此时在admin中,怎么指定模型的显示方式呢?

    这里给出一个解决方案:

    """ office跟duty是多对多关系 """
    
    class DutyInline(admin.TabularInline):  
        model = Office.duties.through  
        model._meta.verbose_name = '关系的名称'  
        model._meta.verbose_name_plural = '关系的名称s'  
        model.__str__ = lambda obj: ''  
        model.office.field.verbose_name = '模型名称'  
        extra = 1
    
    
    @admin.register(Duty)  
    class DutyAdmin(admin.ModelAdmin):  
        inlines = [  
            DutyInline,  
        ]
    

    在admin中,对model相关属性进行配置,同样能够实现自定义显示的功能,比指定through模型要省事。

    相关文章

      网友评论

          本文标题:Django Admin对ManyToMany字段的自定义

          本文链接:https://www.haomeiwen.com/subject/kosqgrtx.html