variable template tag registered one not must library ifequal examples django django-models

django - template - Múltiples imágenes por modelo



inclusion tags django (3)

Estoy escribiendo una aplicación de listado de bienes raíces simple en Django. Cada propiedad debe tener una cantidad variable de imágenes. Las imágenes deben tener un orden editable. Y necesito que el administrador sea a prueba del usuario.

Entonces, dicho, ¿cuáles son mis opciones?

  1. ¿Hay un campo ImageList que no sepa?

  2. ¿Hay alguna aplicación como django.contrib.comments que haga el trabajo por mí?

  3. Si tengo que escribirlo yo mismo, ¿cómo haré para que el lado administrativo sea decente? Me imagino algo mucho más resbaladizo que lo que proporciona ImageField, con algunos drag''n''drop para reordenar. Pero soy un completo clutz al escribir páginas de administración = (


  1. Las listas de variables, también conocidas como relaciones de varios a uno, generalmente se manejan haciendo un modelo separado para muchos y, en ese modelo, usando un ForeignKey al "uno".

  2. No hay una aplicación como esta en django.contrib, pero hay varios proyectos externos que puedes usar, por ejemplo, django-photologue que incluso tiene algún soporte para ver las imágenes en el administrador.

  3. El sitio de administración no se puede hacer "a prueba del usuario", solo debe ser utilizado por usuarios de confianza. Dado esto, la manera de hacer que su sitio de administración sea decente sería definir un ModelAdmin para su propiedad y luego alinear las fotos ( documentación en línea ).

Entonces, para darle algunos borradores rápidos, todo se vería así:

# models.py class Property(models.Model): address = models.TextField() ... class PropertyImage(models.Model): property = models.ForeignKey(Property, related_name=''images'') image = models.ImageField()

y:

# admin.py class PropertyImageInline(admin.TabularInline): model = PropertyImage extra = 3 class PropertyAdmin(admin.ModelAdmin): inlines = [ PropertyImageInline, ] admin.site.register(Property, PropertyAdmin)

La razón para usar el argumento related_name en ForeignKey es que sus consultas serán más legibles, por ejemplo, en este caso puede hacer algo como esto en su vista:

property = Property.objects.get(pk=1) image_list = property.images.all()

EDITAR: se olvidó de mencionar, luego puede implementar el orden de arrastrar y soltar en el administrador usando fragmentos de Orderable de Simon Willison usando arrastrar y soltar con jQuery UI


Actualmente estoy haciendo lo mismo y me enfrenté al mismo problema.

Después de investigar por un tiempo, decidí usar django-imaging . Tiene una buena función de Ajax , las imágenes se pueden cargar en la misma página que la página de inserción del modelo y pueden editarse. Lo único que falta es el soporte para extensiones que no sean JPEG. Espero tener la solución para esto en días. :)


Escriba un modelo de imagen que tenga una clave externa para su modelo de propiedad. Muy probablemente, tendrá otros campos que pertenecen a la imagen y no a la propiedad.