Привет, я только начал изучать Django на этой неделе и создаю приложение списка дел, в котором пользователь может создавать несколько списков дел, каждый из которых может содержать несколько элементов.
Models.py
class Todolist(models.Model):
listname = models.CharField(max_length=200)
date = models.DateTimeField(default=datetime.now)
user = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
class Todo(models.Model):
todoname = models.CharField(max_length=200)
date = models.DateTimeField(default=datetime.now)
user = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
whichlist = models.ForeignKey(Todolist, on_delete=models.CASCADE, null=True)
Views.py
def dolist(request, list_id):
tdlist = Todolist.objects.get(id=list_id)
current_user = request.user
user_todo = Todo.objects.filter(user=current_user, whichlist=tdlist)
return render(request, 'todolist/tdlists.html', {'tdlist': tdlist, 'todos': user_todo,'list_id':list_id})
def addtodo(request):
if request.method == 'POST':
user = request.user
list_id = request.POST.get('list_id')
Todo.objects.create(todoname = request.POST['todoname'], user=user, whichlist=list_id)
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
else:
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
. Шаблон HTML.
<form action="/index/todolist/addtodo" method="POST">
{% csrf_token %}
<input type="hidden" name="list_id" value={{list_id}}>
<input type="text" name="todoname"/>
<input type="submit" value="Add to-do item"/>
</form>
Прямо сейчас, если я выберу параметр whichlist в Todo.objects.create (), элемент to do может быть создан при отправке формы, но внешний ключ не назначен, поэтому он не будет отображаться в этом todo страница списка. Я могу зайти на сайт администратора Django и вручную назначить список для элемента Todo, после чего он появится на этой странице списка.
Как я могу сделать так, чтобы внешний ключ элемента todo автоматически назначался? то есть элемент todo mario, назначенный mario для списка дел
Любая помощь приветствуется !!