如何创建与另一个相关的模型以生成列表

时间:2019-05-09 15:25:24

标签: python django model logic

我正在尝试创建一个待办事项列表,用户可以在其中创建诸如“早晨例行程序”之类的任务列表,并将其直接导入到我的待办事项应用程序中。

Models.py Todo TodoList

class Todo(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
    text = models.CharField(max_length=150, verbose_name="Nom de la Todo")
    content = models.TextField(verbose_name="Description supplémentaire",null=True, blank=True)


class TodoList(models.Model):
    list = models.ForeignKey(Todo, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
    text = models.CharField(max_length=150, verbose_name="Nom de la Todo")

我的todoApp工作正常,但是我不知道如何链接它们并将列表从todo导入TodoList

谢谢大家

1 个答案:

答案 0 :(得分:0)

如果您添加了ManyToManyField代替TodoList的WinGet, OutputVar, List属性上的ForeignKey,那么它可能会满足您的需求。

list

然后按照您的应用逻辑,您可以执行以下操作:

class Todo(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
    text = models.CharField(max_length=150, verbose_name="Nom de la Todo")
    content = models.TextField(verbose_name="Description supplémentaire",null=True, blank=True)


class TodoList(models.Model):
    list = models.ManyToManyField(Todo, verbose_name="Nom de l'utilisateur")
    text = models.CharField(max_length=150, verbose_name="Nom de la Todo")

然后您将通过以下操作获得列表:

todolist1 = TodoList(text='Stuff to do before tonight')
toddolist1.save()

todo1 = Todo(author=author_obj, text="Brush teeth", content="Remember to floss")
todo1.save()
todo2 = Todo(author=author_obj, text="Comb hair", content="Use water")
todo2.save()

todolist1.todos.add(todo1, todo2)

引用:https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/,其中该示例中的todolist1.todos.all() 等效于Article,而TodoList等效于Publication

编辑: 从TodoList中删除一个项目看起来像这样:

Todo

todolist1.todos.remove(todo1) 不会完全删除待办事项,因此.remove()仍会出现在其他Todolists中。要完全删除所有待办事项中的待办事项,您可以做类似的事情。

todo1