【问题标题】:Django extra fields on many-to-many relationships admin add in reverse order多对多关系管理员上的 Django 额外字段以相反的顺序添加
【发布时间】:2016-10-25 15:15:17
【问题描述】:

带有额外字段的多对多关系的默认管理界面如下图所示

是否可以定义此列表中的项目以相反的顺序显示,以便新字段始终保持在顶部第一行?

【问题讨论】:

    标签: django django-admin many-to-many


    【解决方案1】:

    在 django/contrib/admin/options.py 中

    大约 265 的行号: 找到这个方法:

    def formfield_for_manytomany(self, db_field, request=None, **kwargs):
        """
        Get a form Field for a ManyToManyField.
        """
        # If it uses an intermediary model that isn't auto created, don't show
        # a field in admin.
        if not db_field.rel.through._meta.auto_created:
            return None
        db = kwargs.get('using')
    
        if db_field.name in self.raw_id_fields:
            kwargs['widget'] = widgets.ManyToManyRawIdWidget(db_field.rel,
                                    self.admin_site, using=db)
            kwargs['help_text'] = ''
        elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
            kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
    
        if 'queryset' not in kwargs:
            queryset = self.get_field_queryset(db, db_field, request)
            if queryset is not None:
                kwargs['queryset'] = queryset
    
        return db_field.formfield(**kwargs)
    

    尝试操作/重新排序返回值或尝试查看 **kwargs 值

    【讨论】:

    • 感谢 Ohad,我尝试查看您的建议,但没有成功。我想我已经找到了应该在哪里进行更改,它在“inlines.js”中。我提出了另一个问题,因为它与 javascript 相关。如果您有兴趣,这里是链接stackoverflow.com/questions/38039535/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2011-09-26
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多