Reputation: 1185
I can't get the collapse
fieldset to show in the admin controls. To top things off, I also get an error on load every now and then, which only seems to appear, whenever I am in the admin controls. I can't piece together the errors to surmise what causes the problem, but I only seem able to reproduce it when I include the included code in 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
Any ideas what might be causing this?
EDIT: Upon closer review, an error still persists, even when the collapsed fields are commented out. The layout problem may be related to this error or completely separate. I’d like to see both fixed, obviously.
Here is the seemingly different error:
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
And the related 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)
Upvotes: 2
Views: 1849
Reputation: 1369
The problem is this (and similar) lines:
(None, {'fields': ['agrees'], 'classes': ['collapse']}),
When the fieldset title is None
, there is no fieldset title and thus nothing to click on to expand the fieldset. This comment in the Django bug tracker, albeit old, indicates that using no title and collapse
is a Bad Idea (tm) and you "just shouldn't do that."
As for your other problem, there's a problem of some form with your OS. It just means that a connection (to your Python server) was made, but your computer (your host) terminated the connection before Python was done with it for some reason.
This problem is a bit old but it's still fairly high on the results for searches like "django fieldset collapse doesn't work", so I thought I might answer it for future searchers.
Upvotes: 4