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])
Introducción
Bienvenido al desarrollo backend con Python
¿Qué es Django?
Comenzando a programar en Django
Instalación de Django
Explorando los archivos que creó Django
El servidor de desarrollo
Nuestro primer proyecto: Premios Platzi App
Nuestro primer proyecto: Premios Platzi App 2
Ajustando el archivo settings.py
Models
¿Qué es ORM? ¿Qué es un modelo?
Creando un diagrama entidad-relación para nuestro proyecto
Creando los modelos Question y Choice
Interactive Shell
La consola interactiva de Django
El método __str__
Filtrando los objetos creados desde la consola interactiva
El método filter
Accediendo al conjunto de respuestas
Django Admin
El administrador de Django
Views
¿Qué son las views o vistas?
Creando vistas para la aplicación
Templates de Django
Creando el template del home
Elevando el error 404
Utilizando la etiqueta url para evitar el hard coding
Forms
Formularios: lo básico
Creando la vista vote
Creando la vista results
Generic Views
Generic Views
Implementando generic views en la aplicación
Conclusiones
Aprendiste mucho, pero, ¿estás listo para pasar al siguiente nivel?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 35
Preguntas 2
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.
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í:
El formulario se genera automáticamente a partir del Questionmodelo.
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.
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)
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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.