Django Admin Kink с Свернуть Наборы полей - PullRequest
2 голосов
/ 03 октября 2011

Я не могу получить набор полей collapse для отображения в элементах управления администратора.В довершение всего, время от времени я также получаю сообщение об ошибке при загрузке, которое появляется только тогда, когда я нахожусь в административном управлении.Я не могу собрать воедино ошибки, чтобы предположить причину проблемы, но я могу воспроизвести ее только тогда, когда включаю включенный код в admin.py.

Ошибка макета администратора

Admin layout error

admin.py

from forum.models import Category, Thread, Post
from django.contrib import admin

class PostAdmin(admin.ModelAdmin):
  fieldsets = [
    (None, {'fields': ['author']}),
    (None, {'fields': ['thread']}),
    (None, {'fields': ['creation_date']}),
    (None, {'fields': ['content'], 'classes': ['collapse']}),
    (None, {'fields': ['is_removed']}),
    (None, {'fields': ['agrees'], 'classes': ['collapse']}),
    (None, {'fields': ['thanks'], 'classes': ['collapse']}),
    (None, {'fields': ['saves'], 'classes': ['collapse']}),
  ]

  admin.site.register(Post, PostAdmin)

(иногда) Ошибка

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 284, in run
    self.finish_response()
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 324, in finish_response
    self.write(data)
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 403, in write
    self.send_headers()
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 467, in send_headers
    self.send_preamble()
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 385, in send_preamble
    'Date: %s\r\n' % http_date()
  File "C:\Python27\lib\socket.py", line 324, in write
    self.flush()
  File "C:\Python27\lib\socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in your host machine
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 64523)
Traceback (most recent call last):
  File "C:\Python27\lib\SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 570, in __init__
    BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
  File "C:\Python27\lib\SocketServer.py", line 641, in __init__
    self.finish()
  File "C:\Python27\lib\SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "C:\Python27\lib\socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in your host machine

Есть идеи, что может быть причиной этого?

РЕДАКТИРОВАТЬ: При ближайшем рассмотрении ошибка все еще сохраняется, даже когда свернутые поля закомментированы.Проблема макета может быть связана с этой ошибкой или полностью отделена.Я бы хотел, чтобы оба исправились, очевидно.

Вот, казалось бы, другая ошибка:

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 284, in run
    self.finish_response()
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 324, in finish_response
    self.write(data)
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 403, in write
    self.send_headers()
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 467, in send_headers
    self.send_preamble()
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 385, in send_preamble
    'Date: %s\r\n' % http_date()
  File "C:\Python27\lib\socket.py", line 324, in write
    self.flush()
  File "C:\Python27\lib\socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in your host machine
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 50055)
Traceback (most recent call last):
  File "C:\Python27\lib\SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 570, in __init__
    BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
  File "C:\Python27\lib\SocketServer.py", line 641, in __init__
    self.finish()
  File "C:\Python27\lib\SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "C:\Python27\lib\socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in your host machine

И связанная admin.py:

from forum.models   import Category, Thread, Post
from django.contrib import admin

class ThreadAdmin(admin.ModelAdmin):
    "Thread layout in the admin control panel."

# Actions
    def admin_lock(self, request, queryset):
        rows_updated = queryset.update(is_locked=True)
        if rows_updated == 1:
            message_bit = "1 thread was"
        else:
            message_bit = "%s threads were" % rows_updated
        self.message_user(request, "%s successfully marked as locked" % message_bit)
    admin_lock.short_description = "Lock selected threads"

    def admin_unlock(self, request, queryset):
        rows_updated = queryset.update(is_locked=False)
        if rows_updated == 1:
            message_bit = "1 thread was"
        else:
            message_bit = "%s threads were" % rows_updated
        self.message_user(request, "%s successfully marked as unlocked" % message_bit)
    admin_unlock.short_description = "Unlock selected threads"

    def admin_remove(self, request, queryset):
        rows_updated = queryset.update(is_removed=True)
        if rows_updated == 1:
            message_bit = "1 thread was"
        else:
            message_bit = "%s threads were" % rows_updated
        self.message_user(request, "%s successfully marked as removed" % message_bit)
    admin_remove.short_description = "Remove selected threads"

    def admin_restore(self, request, queryset):
        rows_updated = queryset.update(is_removed=False)
        if rows_updated == 1:
            message_bit = "1 thread was"
        else:
            message_bit = "%s threads were" % rows_updated
            self.message_user(request, "%s successfully marked as restored" % message_bit)
    admin_restore.short_description = "Restore selected threads"

    actions        = ['admin_lock', 'admin_unlock',
                      'admin_remove', 'admin_restore']
    date_hierarchy =  'creation_date'
    list_display   = ('title', 'category', 'author',
                      'relative_date', 'creation_date')
    list_filter    = ('category',) # Doesn't work
    search_fields  = ['title', 'author']

class PostAdmin(admin.ModelAdmin):
    "Post layout in the admin control panel."

# Actions
    def admin_remove(self, request, queryset):
        rows_updated = queryset.update(is_removed=True)
        if rows_updated == 1:
            message_bit = "1 post was"
        else:
            message_bit = "%s posts were" % rows_updated
        self.message_user(request, "%s successfully marked as removed" % message_bit)
    admin_remove.short_description = "Remove selected posts"

    def admin_restore(self, request, queryset):
        rows_updated = queryset.update(is_removed=False)
        if rows_updated == 1:
            message_bit = "1 post was"
        else:
            message_bit = "%s posts were" % rows_updated
        self.message_user(request, "%s successfully marked as restored" % message_bit)
    admin_restore.short_description = "Restore selected threads"

    actions        = ['admin_remove', 'admin_restore']
    date_hierarchy =  'creation_date'
    list_display   = ('thread', 'author',
                      'relative_date', 'creation_date')
    list_filter    = ('thread',)
    search_fields  = ['thread', 'author']

admin.site.register(Category)
admin.site.register(Thread, ThreadAdmin)
admin.site.register(Post, PostAdmin)

Смежные вопросы

  1. Ошибка сервера запуска Django
  2. Ошибка при отображении статического содержимого

1 Ответ

2 голосов
/ 01 мая 2015

Проблема заключается в следующих (и похожих) строках:

(None, {'fields': ['agrees'], 'classes': ['collapse']}),

Когда заголовок набора полей равен None, заголовок набора полей отсутствует, и, таким образом, на нем нечего щелкнуть, чтобы развернуть набор полей. Этот комментарий в трекере ошибок Django, хотя и старый, указывает на то, что использование без заголовка и collapse - плохая идея (тм), и вы "просто не должны этого делать".

Что касается вашей другой проблемы, есть проблема какой-то формы с вашей ОС.Это просто означает, что было установлено соединение (с вашим сервером Python), но ваш компьютер (ваш хост) прекратил соединение до того, как Python по какой-то причине завершил его.

Эта проблема немного устарела, но все ещедовольно высокие результаты для поисков типа «django fieldset collapse не работает», поэтому я подумал, что могу ответить на него для будущих поисковиков.

...