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 “Hoy” y una ventana emergente de calendario, y las horas obtienen un acceso directo “Ahora” 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’s 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…py 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 “winpty” 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: ‘set’ 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.