2015-01-24 10 views
5

È possibile spostare il modello di gruppi predefinito dalla sezione "Autenticazione e autenticazione" (nel sito di amministrazione Django) a quello personalizzato e come ottenerlo?Come spostare il modello nell'altra sezione nel sito di Django admin

Iniziamo dalle altre parole.

Ho un account di applicazione molto semplice nel mio progetto Django.

file di models.py appare come di seguito:

from django.contrib.auth.models import AbstractUser 


class User(AbstractUser): 
    def __str__(self): 
     return self.email 

file di serializers.py:

from rest_framework import serializers 
from django.contrib.auth.models import Group 
from django.contrib.auth import get_user_model 


class GroupSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = Group 


class UserSerializer(serializers.HyperlinkedModelSerializer): 
    groups = serializers.HyperlinkedRelatedField(
     many=True, 
     required=False, 
     read_only=True, 
     view_name="group-detail" 
    ) 

    class Meta: 
     model = get_user_model() 
     exclude = ('user_permissions',) 

Ora, sul sito di amministrazione ho due sezioni: e 'autenticazione 'Account' e autorizzazione '. La sezione "Account" contiene la mia tabella "Utenti" (per il modello utente) e "Autenticazione e autorizzazione" contiene la tabella "Gruppi" (per il modello di gruppo di autorizzazione predefinito di Django).

La mia domanda è: è possibile e come spostare la tabella dei gruppi (modello) nella sezione "Account"?

Ho anche provato a creare un modello "Gruppo" personalizzato basato sul modello di gruppo di autenticazione predefinito di Django ma sono rimasto bloccato sulle eccezioni di migrazione.

+0

Qual è la struttura dell'URL che stai cercando? Quindi 2 app saranno sotto gli account? –

+0

Penso che quello che stai chiedendo è quello di visualizzare il modello Utente nel sito di amministrazione con più funzionalità. Per fare ciò è necessario annullare la registrazione del modello utente e quindi creare un AdminModel con i campi desiderati, quindi registrare nuovamente il modello utente. Vedi http://stackoverflow.com/questions/2552516/changing-user-modeladmin-for-django-admin – abdul

risposta

6

È possibile spostare il modello di gruppi predefinito dalla sezione "Autenticazione e autenticazione" (nel sito di amministrazione Django) a uno personalizzato e come ottenerlo?

Sì, è possibile.

1) È possibile spostare il modello per la sezione auth, basta aggiungere alla classe:

class Meta: 
    app_label = 'auth' 

2) È possibile spostare i modelli User Group e alla sezione app, per quella variante bisogno di:

Override modello di utente e aggiungerlo alla vostra applicazione

from django.contrib.auth.models import AbstractUser 


class CustomUser(AbstractUser): 
    pass 

devono anche aggiungere alle impostazioni di progetto AUTH_USER_MODEL = 'your_app.CustomUser'

Non dimenticare dichiarare in admin.py dalla tua app:

class UserAdmin(admin.ModelAdmin): 
    pass 


admin.site.register(CustomUser, UserAdmin) 

Per il modello di gruppo inserire questo codice in admin.py:

from django.db.models.loading import get_models 
from django.contrib.auth import models 

models = get_models(models) 
models[1]._meta.app_label = 'your_app' 

3) Potete guardare django-admin-tools

+0

Grazie. Questo è quello che stavo cercando. – tommus

+0

'from django.db.models.loading get_models' è deprecato in Django 1.9 e superiore –

+0

Per spostare il modello di gruppo in django 2+, funziona bene per inserire admin.py. 'da django.apps import app' ' apps.get_model ('auth.Group') ._ meta.app_label = '' ' –