¡Estoy entendiendo mal algo! Si mi modelo no se guarda, no tiene una identificación asociada. Así que si tengo algo como esto:instancia de formulario de un modelo da id = Ninguna Django
views.py
(insertar o editar la información de los actuales usos del mismo ModelForm)
def insert_or_modify(request, id=None):
if id is not None:
book = BookModel.objects.get(pk=id)
else:
book = BookModel()
if request.method == 'POST':
form = BookInfoForm(request.POST, request.FILES, instance=book)
if form.is_valid():
form.save()
....
return render_to_response(...)
también tengo una imagen y utilizar upload_to para la ImageField. Hay dos problemas: id es None y no estoy seguro de cómo manipular/guardar el instance=book
para que realmente obtenga una identificación. El segundo problema es que la ubicación donde guardo mis datos está muy lejos. A pesar de que la etiqueta de plantilla book.img.url
tiene la ubicación deseada del libro en http:127.0.0.1:8000/folder1/media/id/
, la ubicación real está en otra parte:
Donde quiero salvar mi imagen en:
/project/folder1/media/id/
donde id
es el identificador de libro.
Lo que realmente sale:
/project/id/
(Pero 'id' se convierte en 'Ninguno', ya que no existe!)
Mi código anterior funcione. Se guardaría en la ubicación correcta, pero con este código actual, no funciona. Entonces, el problema del ahorro no parece deberse a settings.py, ya que funcionó previamente.
EDIT: no elimina el código de área de código de formateo
EDIT: descubrí por qué yo no estaba salvando a la ubicación correcta. Resultó que olvidé descomentar algo la última vez que modifiqué settings.py. ¡Guardar en la ubicación funciona ahora! ¡Lo siento chicos!
EDIT: Creo que el problema id = None es causado por form.save(). Si evito hacerlo y solo guardo el modelo directamente, no tengo este problema.
Gracias! Sí, intenté algo como esto. Todavía está creando la carpeta None, pero esta vez también está creando la carpeta id. Por ejemplo, si hago 'save_book.img.save ('img', request.FILES ['img'])', la img se guardará en/None y/1. – sharkfin