Я что-то неправильно понимаю! Если моя модель не сохранена, у нее нет связанного с ней идентификатора. если у меня есть что-то вроде этого:
views.py
(при вставке или редактировании существующей информации используется та же форма модели)
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(...)
У меня также есть изображение и я использую upload_to для поля изображения. Есть две проблемы: id is None и я не уверен, как манипулировать / сохранять экземпляр instance = book
, чтобы получить идентификатор. Вторая проблема заключается в том, что местоположение, в котором я сохраняю свои данные, находится далеко. Несмотря на то, что тег шаблона book.img.url
имеет желаемое расположение книги по адресу http: 127.0.0.1: 8000 / folder1 / media / id /
, фактическое местоположение находится в другом месте:
Куда я хочу сохранить свое изображение:
/project/folder1/media/id/
, где id
- это идентификатор книги.
На самом деле я получаю:
/project/id/
(Но id становится None, поскольку его не существует!)
Мой предыдущий код работал. Он будет сохранен в правильном месте, но с текущим кодом это не работает. Таким образом, проблема с сохранением не связана с settings.py, поскольку она работала ранее.
РЕДАКТИРОВАТЬ: из области форматирования кода удален код, не являющийся кодом
РЕДАКТИРОВАТЬ: Я выяснил, почему я не сохраняю в правильном месте. Как оказалось, я забыл что-то раскомментировать, когда в последний раз менял settings.py. Сохранение в локацию теперь работает! Извините ребята!
РЕДАКТИРОВАТЬ: Я думаю, что проблема id = None вызвана form.save (). Если я этого не сделаю и сохраню напрямую в модель, у меня не будет этой проблемы.