No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso B谩sico de Django

Curso B谩sico de Django

Facundo Garc铆a Martoni

Facundo Garc铆a Martoni

El administrador de Django

17/29
Recursos

Aportes 35

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Para registrar uno o mas modelos puedes pasarlos dentro de una lista:

from django.contrib import admin
from .models import Question, Choice

admin.site.register([Question, Choice])

Para poder ver en el Question las Choice agregar el siguiente c贸digo en el archivo admin y quitando el registro anterior.

class ChoicesInline(admin.StackedInline):
    model = Choice
    can_delete = False
    verbose_name_plural = 'choices'

@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    inlines = (ChoicesInline,)

ASI ASI ASI ES QUE SE ENSE脩A!

En el models se puede agregar una clase Meta dentro de la clase del modelo para definir m谩s atributos del modelo, por ejemplo el nombre que queremos que se visualice el modelo o el campo por el que se debe mostrar ordenados los datos. Pueden encontrar m谩s informaci贸n en https://docs.djangoproject.com/en/4.0/ref/models/options/

class Question(models.Model):
    question_text= models.CharField(max_length=200)
    pub_date= models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["pub_date"]
        verbose_name_plural = "Preguntas de la Encuesta"

Para visualizar el administrador de Django en espa帽ol, tendr铆an que modificar en el archivo settings la variable LANGUAGE_CODE = 'es-mx鈥
En mi caso lo estoy asignando al espa帽ol de M茅xico pero podr铆an ponerlo al que ustedes requieran.

Sin duda, Django tiene baterias extra. Me emocion茅 con est谩 clase. 馃槃

Aqu铆 les dejo un link donde explican m谩s a profundidad toda la configuraci贸n y personalizaci贸n de Django Admin.

Customize the Django Admin With Python

Para ver las Choice en el admin solo debes agregar en admin-py:

# polls/admin.py
from django.contrib import admin
from .models import Question, Choice

admin.site.register(Question)
admin.site.register(Choice)

Dentro del admin modifique los votos y para verlo en el shell le agregue al str:

    #Metodo para imprimir el valor de choice_text
    def __str__(self):
        return self.choice_text+" -- "+str(self.votes)

Cosas a tener en cuenta aqu铆:

  1. El formulario se genera autom谩ticamente a partir del Questionmodelo.

  2. Los diferentes tipos de campo de modelo ( DateTimeField, CharField) corresponden al widget de entrada HTML adecuado. Cada tipo de campo sabe c贸mo mostrarse en el administrador de Django.

  3. Cada uno DateTimeField obtiene atajos de JavaScript gratuitos. Las fechas obtienen un acceso directo 鈥淗oy鈥 y una ventana emergente de calendario, y las horas obtienen un acceso directo 鈥淎hora鈥 y una ventana emergente conveniente que enumera las horas ingresadas com煤nmente.

Cuando se crea un usuario usando el admin de Django es importante marcar la opcion is_staff para que pueda ingresar tambi茅n al admin web

Esto es lo m谩s hermoso que he hecho con python hasta el momento. Viva Django

Esta clase me hizo sentir poderoso 馃, si tuvi茅ramos docentes como Facundo en la universidad todo ser铆a mucho mejor.

Si corren el comando para crear el superuser en Git Bash

python manage.py createsuperuser

y les sale el siguiente error:

Superuser creation skipped due to not running in a TTY. You can run manage.py createsuperuser in your project to create one manually.

Intenten a帽adirle winpty al principio y quedar铆a de esta manera:

winpty python manage.py createsuperuser

The way we set a scalabable way to access the queries and handling the data in a no-code way

python manage.py createsuperuser
Username (leave blank to use 'root'): aprendefelipe
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

First we have to set the availability of the model for the admin at polls/admin.py

from django.contrib import admin
from .models import Question, Choice

admin.site.register(Question) #this function set the model available for the admin
admin.site.register(Choice)

at /admin



Here we can access to our questions and take actions like create, delete and so on


it鈥檚 impresive that the choices are related to the question as we set and also we can change it or create and relate choices to other questions


Users management


Groups Management

Si por ejemplo quisi茅semos que hayan campos de solo lectura en el panel de adminsitraci贸n, en el admin har铆amos lo siguiente

from django.contrib import admin
from .models import Choice

class ChoiceAdmin(admin.ModelAdmin):
    readonly_fields = ['votes']  # Campos de solo lectura

admin.site.register(Choice, ChoiceAdmin)

Por lo que veo aqu铆 podemos crear m谩s usuarios y asignar a los usuarios a ciertos grupos. Esto es muy bueno y seguro porque podemos darle o quitarle poder a los usuarios creados y as铆 habr谩 una mejor administraci贸n de las personas que est谩n en el proyecto de Django.

En la opci贸n **Group ** dentrp de django admin,

Nos permite crear grupos para darle permisos de acceso a las diferentes opciones de interacci贸n con los modelos (Create, View, Update, Delete)

Administrador de datos

para comenzar a usar el administrador se debe crear un usuario y contrase帽a:
python3 manage.py createsuperuser
Se debe tener mucho cuidado con la seguridad de estos datos, ya que si son expuestos pueden comprometer la aplicaci贸n completa.

Ahora, se deben hacer disponibles los modelos creados al administrador:
En el archivo admin鈥y de la carpeta polls:

from .models import Question

admin.site.register(Question)

Usando la direcci贸n htp://127.0.0.1:8000/admin/ Se puede entrar al panel de administraci贸n.

Todos mis apuntes del curso en mi GitHub

que cool que Django tiene disponible un dark mode, me gusta eso

from django.contrib import admin
from .models import Question

admin.site.register(Question)

que pena que no se ha mostrao en shell un caso real, ya que no siempre haces una base de datos desde cero y es necesario aprender a hacer una conexion de base de datos existente.

Bueno hasta aca y despues de varios meses en platzi habia leido de los buenos comentarios sobre Facundo y sus cursos. Y tenian toda la razon, es excelente como profesor, tiene una claridad para explicar realmente notable.

Agregue una pregunta nueva y un usuario con permisos solo para polls xd xd xd xd

Muy bueno est谩 interfaz

Hola Voy a dejar un aporte que puede ayudar a quien le pase lo mismo, cuando se crea el superadministrador en el cmd o gitbash en windows puede aparecer un error en pantalla:

"Superuser creation skipped due to not running in a TTY"
Eso se arregla agregando la palabra 鈥渨inpty鈥 al inicio.

Dejo captura:

Otra manera de poder registrar los N modelos que tenga nuestra app sin necesidad de estar importando uno por uno:

admin.site.register(apps.all_models.get('polls').values())

Interesante la ventana del administrador

Que hermoso framework 馃槃

Si les llega a aparecer este error al entrar a /admin , se corrige cambiando las llaves por corchetes en la aplicacion polls
exception type: typeerror @ /admin/ exception value: 鈥榮et鈥 object not reversible

in urls change {} brackets [] these

urlpatterns = [
    path('', views.index, name='index')
]

Esta muy bien el administrador!

Users : permite crear otros usuarios.
Groups : con lo poco que la visi贸n exploratoria me permite apreciar, es una secci贸n la cual puedo habilitar permisos.

Si desea cambiar el nombre de los m贸dulos a espa帽ol en Django haces esto:

from django.apps import AppConfig

class AccountingConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "apps.accounting"
    verbose_name = "Modulo Contable"

En el archivo pyhton apps py de cada aplicaci贸n de Django agregar el atributo verbose_name con le nombre que le quiera dar a la aplicaci贸n.

Una cosa que me ha llamado la atenci贸n del admin es que, por defecto (no s茅 si se puede configurar posteriormente), no te deje editar los registros de una clase.

Que el admin est茅 incorporado por defecto en DJango, con un modelo de usuarios me parece fant谩stico. Tengo ganas de ver c贸mo se puede escalar el modelo de usuarios, roles y permisos para montar accesos limitados por usuarios y roles XD

Para m铆, este es una de las caracter铆sticas m谩s atractivas de django, te facilita mucho la vida como dev. Es muy configurable y muy poderoso.