together timefield integerfield example delete choices django image django-models upload

timefield - textfield django example



Django: ¿cómo se convierte InMemoryUploadedFile en FieldFile de ImageField? (3)

¿Intentas hacerlo en ModelForm?

Así es como lo hice para el campo de archivo

class UploadSongForm(forms.ModelForm): class Meta: model = Mp3File def save(self): content_type = self.cleaned_data[''file''].content_type filename = gen_md5() + ".mp3" self.cleaned_data[''file''] = SimpleUploadedFile(filename, self.cleaned_data[''file''].read(), content_type) return super(UploadSongForm, self).save()

Puede tomarlo como ejemplo y buscar en la fuente qué necesita la clase InMemoryUploadedFile en los parámetros de inicialización.

He intentado con la help(django.db.models.ImageField) y dir(django.db.models.ImageField) , buscando cómo se puede crear un objeto ImageField partir de una imagen que se carga.

request.FILES tiene las imágenes como InMemoryUploadedFile , pero estoy intentando guardar un modelo que contenga un ImageField , entonces, ¿cómo convierto InMemoryUploadedFile en el ImageField ?

¿Cómo vas a encontrar este tipo de cosas? Sospecho que las dos clases tienen una relación de herencia, pero tendría que hacer un montón de dir() -ing para averiguar si debía mirar.


Puede implementar un formulario con un campo de carga de archivos utilizando instancias de formulario, aquí está la vista:

def form_view(request): if request.method == ''POST'': form = FooForm(request.POST, request.FILES) if form.is_valid(): form.save() return render_to_response(''result.html'') return render_to_response(''form.html'', { ''form'': form; ''error_messages'': form.errors; } form = FooForm() return render_to_response(''form.html'', { ''form'': form; }

form.save () guarda el archivo cargado junto con todos los demás campos a medida que incluyes request.FILES argumento en su constructor. En sus modelos, debe definir la subclase FooForm de la clase ModelForm de la siguiente manera:

class FooForm(ModleForm): Meta: model = Foo

... donde Foo es la subclase de Modelo , que describe los datos que desea almacenar persistentemente.


InMemoryUploadedFile guardar InMemoryUploadedFile en ImageField lugar de ''convertirlo'' en un ImageField :

image = request.FILES[''img''] foo.imagefield.save(image.name, image)

donde foo es la instancia del modelo, y el campo de imagen es el ImageField .

Alternativamente, si está sacando la imagen de un formulario:

image = form.cleaned_data.get(''img'') foo.imagefield.save(image.name, image)