问题
I am using django 1.8.6 and have a new application created in a virtualenv using python manage.py startproject. I have set up my INSTALLED APPS and my database settings (postgresql) and I have run migrate to create the backend. So far all seems fine. I then created a superuser using the createsuperuser command and that all seemed to go fine too. My admin.py file is in place and the content of which is as follows:
from django.contrib import admin
from django.contrib.admin import AdminSite
from myapp.models import mymodel
Class mymodelAdmin(admin.ModelAdmin):
list_display = {col1, col2, col3}
admin.site.register(mymodel, mymodelAdmin)
All what appears to be fairly simple standard stuff, so far so good.
I'm using apache to render my webpages and having configured my virtualhost stuff I can happily log in to my admin page and see everything I have registered plus the default django admin stuff. I can create a new user with no problem and I can create a new Group with no problem. Where I am running into trouble is I ma not able to assign any standard permissions to with my new user or my group. I can see the list of permissions from my database with no problem but the button that I need to click to move a permission from available to assigned seems to be disabled and I cannot find any information anywhere or in any tutorials or blogs that might help me to unravel this issue. I have been able to replicated this on every installation that I have done following various different tutorials but I still end up with the same problem.
Can anyone please shed any light on what I am missing? Thanks in advance.
UPDATE: So there seems to be an issue with my static files. I have yet to create any static files of my own for the app so the only static files are the ones installed when I use pip to install everything. I'm using a virtual environment (env) inside my project and the structure is as follows:
/var/www/<my project>/env
/manage.py
/<my app>/settings.py
/urls.py
/wsgi.py
/templates
/static
/media
My project static directory is empty as I believe that collectstatic should collect all the static files and put them in here. All the other static files are stored in the site-packages directory within my virtual environment but clearly they are not being accessed. Any help on this would be gratefully received.
回答1:
Problem Solved...Hoorah! This was a tough one because everything looked fine except for one little thing. Permissions! However the issue wasn't with permissions at all. A red herring I'm afraid. The issue was all to do with static files and trying to get your head around what's going on and making sure you've got your paths all sorted.
For newbies the key is to specify your main static files directory as an empty directory. This is intentional as the collectstatic routine will populate it for you. It seems to me that you should run this routine after you have installed any apps or plugins that you have defined in INSTALLED_APPS. This routine will go off and find all the static files that these apps need to work properly and will copy them to your base static directory. (Make sure you set the permissions to this directory properly otherwise it wont write the new sub-directories etc.) Once copied you will see in your static directory a list of sub directories containing each set of static files separately so as they don't override each other. Follow this theory and all will work fine. By extension when you create your own static files for your applications, you should keep them in a separate static directory located in your folder. Within this you should have another directory named the same as your app and all your static files should be stored in there. Then when you run the collectstatic routine again, it will copy all your static files to the base static directory and store them neatly in your own app's sub directory so as not to conflict with others.
So in essence you have two static folders at the following paths: /var/www//static (left empty at the same level as manage.py) /var/www///static/
I have read a lot (and torn a lot of hair out) to get to this point. Somewhere I read someone's post who said that the base static directory (the empty one) is a red herring and you should delete it. I believe this is wrong advice. Phew! Got there and hope this helps someone else.
来源:https://stackoverflow.com/questions/46264293/django-admin-wont-allow-me-to-allocate-permissions-to-users-or-groups