Django Galería de imágenes con Django 1.11 Filer

votos
2

Problema

Necesito mostrar una galería de imágenes en una página de producto. Esto funcionó cuando estábamos en Django 1.6, pero desde entonces han actualizado a Django 1.11 (Proceso Grande). Ahora estoy atascado en la forma de conseguir esto para trabajar en el nuevo entorno. En este momento clic Add Imageaparecerá una ventana emergente en la que puede seleccionar la imagen, y las regiones asociadas a ella (Estados Unidos, Canadá, España, etc ..), pero después de hacer clic en el título emergente cambios en Guardar Popup closing...y nunca se cierra - también la la imagen no se añade a la galería. La imagen que subo sí se añade al resto de las imágenes dentro de archivador, sin embargo, no se añade al modelo ProductGallery.

Lo que tengo

Django: 1.11.7

Django-Filer: 1.2.7

Django-Traje: 0.2.25

Vanilla-Vistas: 1.0.4

Tengo modelos de producto, estos productos tienen una relación muchos a muchos a un modelo ProductGallery de este modo:

class Product(models.Model):
    gallery = models.ManyToManyField('products.ProductGallery')

El ProductGallery se supone que las casas de imágenes y vídeos que permiten la carga de cualquiera, y que proporcionan una lista a recorrer en la parte delantera con fines de exhibición.

El ProductGallery se define como:

class ProductGallery(models.Model):
    limit = models.Q(app_label='media', model='image') | models.Q(app_label='media', model='video')

    order = models.PositiveIntegerField(default=0)
    content_type = models.ForeignKey(ContentType, limit_choices_to=limit)
    object_id = models.PositiveIntegerField(db_index=True)
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    class Meta:
        ordering = ('order',)

    def __str__(self):
        return six.text_type(self.content_object)

donde media.imagese define como: (Voy a ignorar vídeo por el momento)

class Image(CountryInfoModel, models.Model):
    image = FilerImageField(null=True, blank=True)

    def __str__(self):
        return str(self.image.name or self.image.original_filename)

Tengo una vista para añadir nuevos medios de comunicación, así:

class AddMedia(LoginRequiredMixin, StaffuserRequiredMixin, JsonRequestResponseMixin, GenericView):
    require_json = True

    def post(self, request, *args, **kwargs):
        object_id = self.request_json[objectId]
        object_var = self.request_json[objectVarName]
        content_type_id = self.request_json[contentType]
        order = self.request_json[order]
        media_id = self.request_json[mediaId]
        media_type = self.request_json[mediaType]

        content_type = _get_content_type_or_404(content_type_id)
        content_object = _get_object_or_404(content_type, object_id)
        model_var = getattr(content_object, object_var)

        try:
            if media_type.lower() == image:
                obj = Image.objects.get(pk=media_id)
            elif media_type.lower() == video:
                obj = Video.objects.get(pk=media_id)
            else:
                raise Http404(Invalid mediaType parameter: {0}.format(media_type))
            media_item = model_var.create(content_object=obj)
            media_item.order = order
            media_item.save()
        except model_var.model.DoesNotExist:
            pass

        return self.render_json_response({'message': Order successfully updated})

Y creo que eso todas las piezas que hay para esto. Estoy perdido en qué cuando hago clic en salvar la imagen no se guarda en el modelo ProductGallery en absoluto. Estaría encantado de proporcionar más contexto, si es necesario, y cualquier ayuda es muy apreciada.

Publicado el 14/11/2017 a las 16:22
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Sólo en caso de cualquier otra persona se encuentra con esto y quiere saber cómo se ha fijado.

Resulta que algunas de las funciones de plantillas de Django-admin habían sido sobrescrito y estaba causando algunos problemas.

Específicamente este proyecto había sobrescrito partes de la funcionalidad de botón de guardar. La función dismissAddRelatedObjectPopupse utiliza para ser nombradodismissAddAnotherPopup

Estas funciones se sobreescriben para proporcionar la funcionalidad personalizada descrito anteriormente, con la ProductGallery. Django fue a llamar a la función, pero esto era lanzar un error en la ventana emergente relacionada con algo que se llama SelectBoxque luego se rompió la llamada ajax que se necesitaba para guardar el modelo correctamente.

Espero que esto puede ayudar a alguien en el futuro!

Respondida el 15/11/2017 a las 17:25
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more