Nieporozumienie coś! Jeśli mój model nie jest zapisany, nie ma powiązanego identyfikatora. Więc jeśli mam coś takiego:instancja formularza modelu daje id = Brak Django
views.py
(wstawianie i edytowanie istniejących informacji używa tego samego 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(...)
Mam też zdjęcie i użyć upload_to dla ImageField. Są dwa problemy: id jest Brak i nie jestem pewien, jak manipulować/zapisać instance=book
, tak żebym dostał identyfikator. Drugi problem polega na tym, że lokalizacja, w której zapisuję moje dane, jest wyłączona. Mimo że szablon book.img.url
posiada pożądaną lokalizację książki w http:127.0.0.1:8000/folder1/media/id/
, rzeczywista lokalizacja jest gdzieś indziej:
gdzie chcę zapisać mój obraz do:
/project/folder1/media/id/
gdzie id
jest identyfikator książki.
Co ja rzeczywiście dostać:
/project/id/
(Ale 'id' staje się 'Brak', ponieważ nie istnieje!)
Moje poprzednie kod zadziałał. Zapisałoby się to w poprawnej lokalizacji, ale przy obecnym kodzie nie działa. Tak więc problem ze składowaniem nie wygląda na to, że spowodowany jest plikiem settings.py, ponieważ działał wcześniej.
EDIT: usuwa non-kod z numerem kierunkowym formatowanie
EDIT: I okazało się, dlaczego nie oszczędzając do właściwej lokalizacji. Jak się okazało, zapomniałem odkomentować coś, kiedy ostatnio modyfikowałem settings.py. Zapisywanie do lokalizacji działa teraz! Przepraszam chłopaki!
EDYCJA: Myślę, że id = Brak problem jest spowodowany przez form.save(). Jeśli tego nie zrobię i po prostu zapiszę model bezpośrednio, nie mam tego problemu.
Dzięki! Tak, próbowałem czegoś takiego. Wciąż tworzy folder None, ale tym razem tworzy także folder id. Na przykład, jeśli zrobię 'save_book.img.save ('img', request.FILES ['img'])', img zostanie zapisany w/None i/1. – sharkfin