Django在表单提交时分配外键

2024-09-25 16:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我这周刚开始学习Django,正在创建一个to-do-list应用程序,用户可以创建多个to-do-list,每个列表可以容纳多个项目。你知道吗

你知道吗型号.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)

你知道吗视图.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创建(),可以在表单提交时创建待办事项,但未分配外键,因此它不会显示在该待办事项列表页上。我可以去Django管理站点,手动为Todo项分配whichlist,然后它就会显示在列表页面上。你知道吗

如何使todo项的foreignkey自动分配?i、 e.分配给马里奥待办事项列表的马里奥待办事项

感谢您的帮助!!你知道吗


Tags: iddefault列表getobjectsmodelsrequest事项