2013-10-24 3 views
2

Я использую CreateWithInlinesView от django-extra-views. Как я могу получить текущий пользователь в этом случае?django-extra-views получить текущий пользователь

У меня есть что-то вроде этого в настоящее время

class PublisherCreateView(CreateWithInlinesView): 
    model = Publisher 
    inlines = [BookInline,] 

    def form_valid(self, form, inlines): 
     form.instance.created_by = self.request.user 
     return super(PublisherCreateView, self).form_valid(form, inlines) 

и это по-прежнему возвращает ошибку (1048, "Column 'created_by_id' cannot be null").

редактировать: сделал мое редактирование в ответ

+1

Вы должны добавить свое решение в качестве ответа и принять его. – Sudipta

+0

Мне не хватает репутации, чтобы сделать это немедленно, но я сделаю это через 5 часов. – tiao

ответ

2
def forms_valid(self, form, inlines): 
     form.instance.created_by = self.request.user 
     return super(PublisherCreateView, self).forms_valid(form, inlines) 

Это потому, что CreateWithInlinesView подклассов BaseCreateWithInlinesView с forms_valid() методами, который вызывает form_valid() на самой форме и ее инлайн.

+0

И как это сделать с помощью встроенных линий? Я сделал это: 'для встроенного в инлайнов: если inline.has_changed(): для формы в inline.forms: если form.has_changed(): form.instance.changed_by = self.request .user' Но тогда идентификатор для foreignKey не заполняется, и я получаю 'inline_model.parent_id не может быть NULL' –

+0

извините за форматирование -I пробовал, но, очевидно, это невозможно в комментарии –

+0

этот блок кода в' forms_valid'? Если да, называете ли вы 'forms_valid' суперкласса (' CreateWithInlinesView')? – tiao

Смежные вопросы