如何在django管理面板中将多对多的选定字段设置为可点击的链接

hts6caw3  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(94)

我正在做一个Django项目,我有一个管理面板来管理项目。在这个项目admin中,我有一个matched_pros字段,它是一个与“main.User”模型相关的ManyToManyField。我想让matched_pros小部件中的选定字段可单击,这样当我单击用户时,它会将我带到管理面板中的用户更改页面。

matched_pros = models.ManyToManyField(
        "main.User", blank=True, related_name="matched_projects"
    )

exemple: many to many widget像在图片中,当我点击客户端alger- c51块,它会带我到admin/main/pro/51/change
我尝试添加JavaScript代码以使用户可点击,但我遇到了代码无法按预期运行的问题,我不想使用JavaScript并向代码库添加另一个文件将其复杂化

a8jjtwal

a8jjtwal1#

试试下面的代码:

from django.contrib import admin
from models import YourModel
from django.urls import reverse
from django.utils.html import format_html

class YourModelAdmin(admin.ModelAdmin):

    def formfield_for_manytomany(
        self,
        db_field,
        request,
        **kwargs
        ):
        if db_field.name == 'matched_pros':  # Replace with your field name
            kwargs['queryset'] = \
                db_field.remote_field.model._default_manager.get_queryset()
            kwargs['widget'] = \
                admin.widgets.FilteredSelectMultiple(db_field.verbose_name,
                    False)
        return super().formfield_for_manytomany(db_field, request,
                **kwargs)

admin.site.register(YourModel, YourModelAdmin)

相关问题