экземпляр формы модели дает id = None Django

Я что-то неправильно понимаю! Если моя модель не сохранена, у нее нет связанного с ней идентификатора. если у меня есть что-то вроде этого:

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 (). Если я этого не сделаю и сохраню напрямую в модель, у меня не будет этой проблемы.

6
задан sharkfin 16 December 2011 в 19:42
поделиться