Passar o usuário atual para a inicial do CreateView no Django
No meu projeto eu tenhoUser
modelo do padrãoauth
Modelo Django e oTodo
modelo. O usuário pode ter muitos Todo.
Quando o usuário conectado cria um todo, ele deve ser atribuído ao todo automaticamente. Eu quero passar o usuário atual para os dados iniciais doCreateView
. Parece-me que estou no caminho certo. É assim que o objeto do formulário se parece:
class TodoView(CreateView):
model = Todo
fields = ('name', 'date')
success_url = '/todos/'
def get_initial(self):
return {
'user': self.request.user
}
E este é um modelo:
class Todo(models.Model):
user = models.ForeignKey(User)
name = models.TextField()
date = models.DateField()
Mas parece que isso não é suficiente, porque eu tenho uma exceção quando os dados válidos vão do lado do cliente. Esta é a exceção:
IntegrityError at /todos/new
todos_todo.user_id may not be NULL
Request Method: POST
Request URL: http://localhost:8000/todos/new
Django Version: 1.6.2
Exception Type: IntegrityError
Exception Value:
todos_todo.user_id may not be NULL
Exception Location: /Library/Python/2.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 450
Python Executable: /usr/bin/python
Python Version: 2.7.5
É possível, de maneira alguma, passar o usuário atual para o modelo doCreateView
? Como fazê-lo nas melhores práticas no Django?