Django - назначить внешний ключ при отправке формы - PullRequest
0 голосов
/ 20 марта 2019

Привет, я только начал изучать 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 для списка дел

Любая помощь приветствуется !!

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