我无法在管理控件中显示 collapse
字段集。最重要的是,我还会时不时地收到加载错误,该错误似乎只在我处于管理控件中时才会出现。我无法将错误拼凑在一起来推测导致问题的原因,但当我将包含的代码包含在 admin.py
中时,我似乎只能重现它。
管理布局错误
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)
相关问题
最佳答案
问题是这行(和类似的):
(None, {'fields': ['agrees'], 'classes': ['collapse']}),
当字段集标题为None
时,没有字段集标题,因此无需单击即可展开字段集。 This comment在 Django 错误跟踪器中,虽然很旧,但表明不使用标题和 collapse
是一个坏主意 (tm),你“只是不应该这样做。”
至于您的其他问题,您的操作系统存在某种形式的问题。它只是意味着已建立连接(到您的 Python 服务器),但您的计算机(您的主机)由于某种原因在 Python 完成连接之前终止了连接。
这个问题有点老了,但它在“django fieldset crash does not work”这样的搜索结果中仍然相当高,所以我想我可能会为 future 的搜索者回答这个问题。
关于Django 管理员与折叠字段集的纠结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638313/