繁体   English   中英

如何使用外键在 django 中保存 forms

[英]How to save forms in django with foreign key

我正在制作一个待办事项列表应用程序,我正在尝试为一个项目制作创建页面。 它的大部分工作,除了我没有把它保存在 go 的待办事项列表中,因此得到这个错误。 '无法分配“'Home'”:“Item.todolist”必须是“TodoList”实例。' 这是我的看法:

def create_todo(request):
context = {"lists": TodoList.objects.filter(user=request.user)}

if request.method == "POST":
    if request.POST.get("create"):
        title = request.POST.get("item_title")
        date_due = request.POST.get("item_date")
        text = request.POST.get("item_note")
        todolist = request.POST.get("todolist")
        t = Item(
            user=request.user,
            todolist=todolist,
            title=title,
            date_due=date_due,
            text=text,
            complete=False,
        )
        t.save()
        redirect("all-todos-view")

return render(request, "create_todo.html", context)

这是我的models.py:

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse

class TodoList(models.Model):
     name = models.CharField(max_length=50)
     user = models.ForeignKey(User, on_delete=models.CASCADE)

def __str__(self):
    return self.name

def get_absolute_url(self):
    return reverse("all-todos-view")


class Item(models.Model):
     user = models.ForeignKey(User, on_delete=models.CASCADE)
     todolist = models.ForeignKey(TodoList, on_delete=models.CASCADE)
     title = models.CharField(max_length=100)
     date_due = models.DateTimeField(
         auto_now=False, auto_now_add=False, blank=True, null=True
     )
     text = models.TextField(blank=True, null=True)
     complete = models.BooleanField(blank=True, null=True)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse("all-todos-view")

试试这个方法

t = Item( title=title,
          date_due=date_due,
          text=text,
          complete=False,
        )
        t.save(commit=False)
        t.user = request.user
        t.todolist.name = todolist
        t.save()
        return redirect("all-todos-view")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM