tutorial superusuario personalizar password modelos girls girl deploy crear python django django-models django-admin

python - superusuario - modelos en django



Anidados lĂ­neas en el administrador de Django? (5)

A partir de ahora no hay una forma "incorporada" de tener líneas anidadas (en línea dentro de línea) en django.contrib.admin. Eliminar algo así es posible al tener sus propias subclases ModelAdmin e InlineModelAdmin que habilitarían este tipo de funcionalidad. Consulte los parches en este ticket http://code.djangoproject.com/ticket/9025 para obtener ideas sobre cómo implementar esto. También necesitaría proporcionar sus propias plantillas que hubieran anidado la iteración tanto en el nivel superior en línea como en el niño en línea.

De acuerdo, tengo un diseño bastante simple.

class Update(models.Model): pub_date = models.DateField() title = models.CharField(max_length=512) class Post(models.Model): update = models.ForeignKey(Update) body = models.TextField() order = models.PositiveIntegerField(blank=True) class Media(models.Model): post = models.ForeignKey(Post) thumb = models.ImageField(upload_to=''frontpage'') fullImagePath = models.ImageField(upload_to=''frontpage'')

¿Existe una manera fácil de permitir que un usuario cree una actualización en una sola página?

Lo que quiero es que un usuario pueda ir a la interfaz de administrador, agregar una nueva actualización y luego, al editar una actualización, agregar una o más publicaciones, y cada publicación tendrá uno o más elementos de medios. Además, quiero que el usuario pueda reordenar publicaciones dentro de una actualización.

Mi intento actual tiene lo siguiente en admin.py:

class MediaInline(admin.StackedInline): model = Media class PostAdmin(admin.ModelAdmin): inlines = [MediaInline,]

Esto permite que el usuario agregue un nuevo elemento de publicación, seleccione la actualización relevante, agregue los elementos multimedia a él y presione guardar, lo cual está bien. Pero no hay forma de ver todas las Publicaciones que pertenecen a una Actualización determinada en un solo lugar, lo que a su vez significa que no puede Roderder Publicaciones dentro de una actualización. Es realmente bastante confuso para el usuario final.

¿Ayuda?



Lo he hecho usando https://github.com/theatlantic/django-nested-admin , para la siguiente estructura de datos:

  • Concurso
    • Jueces
    • Concursantes
      • Cantantes
      • Canciones

Mi archivo admin.py :

from django.contrib import admin import nested_admin from .models import Contest, Contestant, Judge, Song, Singer class SongInline(nested_admin.NestedTabularInline): model = Song extra = 0 class SingerInline(nested_admin.NestedTabularInline): model = Singer extra = 0 class ContestantInline(nested_admin.NestedTabularInline): model = Contestant inlines = [SongInline, SingerInline] extra = 0 class JudgeInline(nested_admin.NestedTabularInline): model = Judge extra = 0 class ContestAdmin(nested_admin.NestedModelAdmin): model = Contest inlines = [ContestantInline, JudgeInline] extra = 0 admin.site.register(Contest, ContestAdmin)

https://github.com/theatlantic/django-nested-admin parece tener un mantenimiento mucho más activo que las otras aplicaciones ya mencionadas ( https://github.com/BertrandBordage/django-super-inlines y https://github.com/Soaa-/django-nested-inlines )


Me encontré con un problema similar a esto. Mi enfoque consistía en crear una UpdateAdmin que incluyera tanto medios como publicaciones ... básicamente lo hace para tener una lista de todas las entradas de medios seguidas por todas las publicaciones de una actualización.

class MediaInline(admin.StackedInline): model = Media class PostInline(admin.StackedInline): model = Post class PostAdmin(admin.ModelAdmin): inlines = [MediaInline,] class UpdateAdmin(admin.ModelAdmin): inlines = [MediaInline,PostInline]

No es una solución ideal pero funciona para un trabajo rápido y sucio.