Modelform проверяет и успешно сохраняет в поле зрения ... и все же это не - PullRequest
1 голос
/ 29 марта 2011

HI,

Это неожиданный результат для меня. Я делаю следующее на мой взгляд ....

        (standard view stuff here...)

        if post:
            postform=PostForm(request.POST,instance=post, prefix="post")
            tagform=TagForm(request.POST, instance=post,prefix='tags')  
            ohouse_form=Host_OHouseForm(request.POST,instance=post,prefix="ohouse")
        else:   
            postform=PostForm(request.POST,prefix="post")
            tagform=TagForm(request.POST, prefix='tags')
            ohouse_form=Host_OHouseForm(request.POST,prefix="ohouse")   

                   (....I first validate that postform and tagform are valid...) 
        if ohouse_form.is_valid():
            ohouse=ohouse_form.save(commit=False)
            ohouse.post=post
            ohouse.host=user
            ohouse.save()

Форма, о которой идет речь, является моделью. Что меня смущает, так это то, что представление работает должным образом, форма проверяется и сохранение прошло успешно. Модель должна быть сохранена в этот момент ... если с формой / моделью что-то не так, она либо не проверит, либо не выдаст ошибку.

И, тем не менее, экземпляр не отображается в моем административном бэкэнде. Это также не присутствует в наборе запросов ohouse.

Это меня смущает

Ответы [ 2 ]

1 голос
/ 29 марта 2011

На основании вашего последнего обновления:

Это очень многообещающий прогресс.Это означает, что происходит запись в базу данных, поскольку возвращение этого идентификатора является запросом БД.

Вы должны print type(ohouse) также.У меня такое чувство, что вы не сохраняете объект OHouse.

Я вижу, что вы передаете instance=post каждому из ваших ModelForms, что не может быть правильным.Это заставит Host_OHouseForm({}, instance=post) вернуть новый Post объект.

У меня есть ставка, в которой проблема.

  if post:
        postform=PostForm(request.POST,instance=post, prefix="post")
        tagform=TagForm(request.POST, instance=post,prefix='tags')  
        ohouse_form=Host_OHouseForm(request.POST,instance=post,prefix="ohouse")
1 голос
/ 29 марта 2011

Я заметил, что вы используете префикс. Посмотрите на странное поведение, которое я заметил в этом другом ответе.

Python - Django - Поле выбора формы и чистые данные

редактирование:

Вы хотите установить все свои экземпляры = сообщения, даже для формы OHouse?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...