Nie jestem pewien, czy moje odkrycie, Podane tutaj informacje byłyby całkowicie przydatne dla kendera, ponieważ między innymi nie wiem, czy mówił on nie tylko o dwóch stronach administratora, ale także o dwóch bazach danych, po jednej dla każdego. To moja sytuacja. Mam świetny pomysł, że chcę, aby jedna z moich aplikacji, nowa aplikacja, miała własną bazę danych i własne strony administracyjne.
Ale wpadłem na problem z podklasowaniem AdminSite w Bernhard Vallant, choć wydaje się, że jest to ortodoksyjne i zasadniczo poprawne. Rozwiązałem problem.
Oto mod do kodu Bernhard Vallant, że znalazłem się być absolutnie konieczne:
from django.contrib.admin.sites import AdminSite
class MyAdminSite(AdminSite):
pass
#or overwrite some methods for different functionality
myadmin = MyAdminSite(name='anything')
Tak, ja naprawdę oznacza name = „coś”, aby wybrać (o ile nie jest to „admin ").I włączałem i wyłączałem to i to za każdym razem kończyło się niepowodzeniem bez przypisywania nazwy "tylko" ale "admin".
Objawy, które nabyłem, to to, że po dodaniu drugiej bazy danych i utworzeniu do niej myadmin, a następnie zarejestrowałem model za pomocą myadmin.register (My_ModelA), i poszedłem do dwóch stron aplikacji administratora, tej dla moja nowa aplikacja, która korzystała z drugiej bazy danych i myadmin oraz modelu My_ModelA wyglądała dobrze, ale moja stara strona administratora pokazała martwe linki do swoich modeli i kiedy kliknąłem tam na niezmiennym łączu dla aplikacji (stara aplikacja, która używa starego baza danych) Otrzymałem kod 404, że strona nie istnieje.
Także, ja nie wiem, czy to ważne, ale zrobiłem coś innego od tego, co Bernhard Vallant zrobił w URLconf projektu:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include('mynewapp.urls')),
url(r'^someword/admin/', include(admin.site.urls)),
)
OK „someword” nie ma znaczenia --- tam wyglądy w odniesieniu do użytkownika końcowego, a nie nazwa aplikacji lub projektu. Ale powiązany administrator to ten dla mojej starej aplikacji i starej bazy danych. Zwróć uwagę na włączanie autodiscover(). W dokumentach jest trochę mrocznego języka, do którego Bernhard Vallant odwołuje się w odniesieniu do jego użycia, gdy konfiguracja projektu urlconf jest skonfigurowana tak, jak ma to miejsce w przypadku Bernhard Vallant z importem myadmin, ale także z odwołaniem do domyślnego administratora.
A dla URLconf dla mynewapp mam:
from django.conf.urls import patterns, url, include
from myproject.admin import myadmin
urlpatterns = patterns('',
url(r'/', include(myadmin.urls))
)
urlpatterns += patterns('mynewapp.views',"... url() stuff for mynewapp's views"),
)
Bez względu na zupełny konieczność nazywania AdminSite instancji wewnętrznie do czegoś innego niż „admin”, muszę dodać, że kiedy przyszedł czas na jazz w górę Plik admin.py mynewapp z pewną podklasą admin.ModelAdmin, konieczne było użycie admin.ModelAdmin jako klasy nadrzędnej. myadmin jest przecież instancją podklasy AdminSite. W związku z tym uważam, że jest to na równi z admin.site, a nie z adminem.
To wszystko jest bardzo mylące dla NOOB, tak jak ja, ponieważ admin, z małymi literami, wygląda jak instancja i nie jestem zaznajomiony z instancjami podklasy. Zakładam więc, że tak nie jest.
kiedy próbuję to zrobić, po zalogowaniu się otrzymuję komunikat "Nie masz uprawnień do edytowania czegokolwiek". message ... – kender
Użytkownik, którego używasz, powinien mieć ustawione wartości true dla pól is_staff i is_superuser. Następnie po rozróżnieniu między różnymi użytkownikami adminów i tym, do czego mają dostęp, zobacz http://docs.djangoproject.com/en/1.2/topics/auth/#permissions –
Ok, mam to do roboty. Ale nie mogę mieć innego zestawu szablonów dla 2 witryn administracyjnych - obaj szukają katalogu "admin /" w szablonach, nawet jeden jest tworzony z argumentem "backoffice", który powinien ustawić jego nazwę na "backoffice" "... – kender