最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

django - NoReverseMatch: Reverse for 'chat_chatroom_changelist' not found. 'chat_chatroom_changelist&

programmeradmin3浏览0评论

Im triyng to register model in django admin, but i get error backend-1 | Couldnt reverse admin:chat_chatroom_changelist. Im using jazzmin for customize admin panel, and i setting up it for model

JAZZMIN_SETTINGS

 {
            'name':_('Chat'),
            'model': 'chat.ChatRoom',
            'url': 'admin:chat_chatroom_changelist',
            'permissions': ['auth.view_user'],
        },

Model has been register in admin.py


  @admin.register(ChatRoom)
class ChatRoomAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {'fields': ('first_user', 'second_user')}),
        (_('Important dates'), {'fields': ('created_at', 'updated_at')}),
    )
    list_display = ('id', 'first_user', 'second_user', 'created_at', 'updated_at')
    readonly_fields = ('created_at', 'updated_at')
    list_display_links = ('id', 'first_user', 'second_user')
    show_full_result_count = False

    def get_queryset(self, request):
        return super().get_queryset(request).select_related('first_user', 'second_user').order_by('-created_at')

    def get_history_queryset(self, request, history_manager, pk_name: str, object_id):
        qs = super().get_history_queryset(request, history_manager, pk_name, object_id)
        return qs.prefetch_related('history_user')

model

class ChatRoom(TimestampMixin, models.Model):
    first_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='first_user')
    second_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='second_user')

    def __str__(self):
        return ' / '.join([str(self.first_user), str(self.second_user)])

    class Meta:
        db_table = 'chatrooms'
        app_label = 'chat'

Full traceback

backend-1  | 15-02-2025  20:08:32 | gunicorn.error   | DEBUG    | 25 workers
backend-1  | [2025-02-15 20:08:32 +0000] [1] [DEBUG] 25 workers
backend-1  | Couldnt reverse admin:chat_chatroom_changelist
backend-1  | Couldnt reverse admin:chat_message_changelist

Additional traceback

Cell In[1], line 2
      1 from django.urls import reverse
----> 2 print(reverse("admin:chat_chatroom_changelist"))
      3 print(reverse("admin:chat_message_changelist"))

File /usr/local/lib/python3.12/site-packages/django/urls/base.py:88, in reverse(viewname, urlconf, args, kwargs, current_app)
     83     if ns_pattern:
     84         resolver = get_ns_resolver(
     85             ns_pattern, resolver, tuple(ns_converters.items())
     86         )
---> 88 return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)

File /usr/local/lib/python3.12/site-packages/django/urls/resolvers.py:831, in URLResolver._reverse_with_prefix(self, lookup_view, _prefix, *args, **kwargs)
    826 else:
    827     msg = (
    828         "Reverse for '%(view)s' not found. '%(view)s' is not "
    829         "a valid view function or pattern name." % {"view": lookup_view_s}
    830     )
--> 831 raise NoReverseMatch(msg)

NoReverseMatch: Reverse for 'chat_chatroom_changelist' not found. 'chat_chatroom_changelist' is not a valid view function or pattern name.

Project structure

_|apps
__|chat
___|admin
____|admin.py
___|models
____|chat.py
___|url.py
___|...
__|...
__|asgi.py
__|wsgi.py
_|settings
__|main.py
__|base.py
__|jazzmin.py
_|...

Im triyng to register model in django admin, but i get error backend-1 | Couldnt reverse admin:chat_chatroom_changelist. Im using jazzmin for customize admin panel, and i setting up it for model

JAZZMIN_SETTINGS

 {
            'name':_('Chat'),
            'model': 'chat.ChatRoom',
            'url': 'admin:chat_chatroom_changelist',
            'permissions': ['auth.view_user'],
        },

Model has been register in admin.py


  @admin.register(ChatRoom)
class ChatRoomAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {'fields': ('first_user', 'second_user')}),
        (_('Important dates'), {'fields': ('created_at', 'updated_at')}),
    )
    list_display = ('id', 'first_user', 'second_user', 'created_at', 'updated_at')
    readonly_fields = ('created_at', 'updated_at')
    list_display_links = ('id', 'first_user', 'second_user')
    show_full_result_count = False

    def get_queryset(self, request):
        return super().get_queryset(request).select_related('first_user', 'second_user').order_by('-created_at')

    def get_history_queryset(self, request, history_manager, pk_name: str, object_id):
        qs = super().get_history_queryset(request, history_manager, pk_name, object_id)
        return qs.prefetch_related('history_user')

model

class ChatRoom(TimestampMixin, models.Model):
    first_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='first_user')
    second_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='second_user')

    def __str__(self):
        return ' / '.join([str(self.first_user), str(self.second_user)])

    class Meta:
        db_table = 'chatrooms'
        app_label = 'chat'

Full traceback

backend-1  | 15-02-2025  20:08:32 | gunicorn.error   | DEBUG    | 25 workers
backend-1  | [2025-02-15 20:08:32 +0000] [1] [DEBUG] 25 workers
backend-1  | Couldnt reverse admin:chat_chatroom_changelist
backend-1  | Couldnt reverse admin:chat_message_changelist

Additional traceback

Cell In[1], line 2
      1 from django.urls import reverse
----> 2 print(reverse("admin:chat_chatroom_changelist"))
      3 print(reverse("admin:chat_message_changelist"))

File /usr/local/lib/python3.12/site-packages/django/urls/base.py:88, in reverse(viewname, urlconf, args, kwargs, current_app)
     83     if ns_pattern:
     84         resolver = get_ns_resolver(
     85             ns_pattern, resolver, tuple(ns_converters.items())
     86         )
---> 88 return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)

File /usr/local/lib/python3.12/site-packages/django/urls/resolvers.py:831, in URLResolver._reverse_with_prefix(self, lookup_view, _prefix, *args, **kwargs)
    826 else:
    827     msg = (
    828         "Reverse for '%(view)s' not found. '%(view)s' is not "
    829         "a valid view function or pattern name." % {"view": lookup_view_s}
    830     )
--> 831 raise NoReverseMatch(msg)

NoReverseMatch: Reverse for 'chat_chatroom_changelist' not found. 'chat_chatroom_changelist' is not a valid view function or pattern name.

Project structure

_|apps
__|chat
___|admin
____|admin.py
___|models
____|chat.py
___|url.py
___|...
__|...
__|asgi.py
__|wsgi.py
_|settings
__|main.py
__|base.py
__|jazzmin.py
_|...
Share Improve this question edited Feb 15 at 20:09 Anton asked Feb 15 at 18:04 AntonAnton 771 silver badge8 bronze badges 4
  • Can you please edit the question and share the full traceback. – willeM_ Van Onsem Commented Feb 15 at 18:09
  • @willeM_ Van Onsem edited – Anton Commented Feb 15 at 20:11
  • 1 But you print(..) the reverse lookups yourself? – willeM_ Van Onsem Commented Feb 16 at 6:20
  • Please give us a traceback coming from actually running Django and not just trying to print the lookups in a notebook. When you run the code like you've done we have to make assumptions about you setting up your notebook correctly to work with your Django project which we otherwise wouldn't have to. – Abdul Aziz Barkat Commented Feb 16 at 10:14
Add a comment  | 

1 Answer 1

Reset to default 0

I just added __init__.py to the admin directory

from apps.chat.admin.admin import ChatRoomAdmin, MessageAdmin

__all__ = ['ChatRoomAdmin', 'MessageAdmin']

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论