【问题标题】:How to transfer data from one list to another in Django?如何在 Django 中将数据从一个列表传输到另一个列表?
【发布时间】:2021-10-14 00:10:43
【问题描述】:

我正在做一个小待办事项列表,我被困在views.py中,还有待办事项 任务、进行中的任务和已完成的任务,我想从 待办任务列表到进行中任务列表,我不知道如何 删除待办任务中的数据,使新数据与待办任务相同 同时在进行中的任务中。如果有人就太好了 可以帮忙,我对 Django 完全陌生。谢谢。

'''

models.py


class Todo(models.Model):

    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    name = models.CharField(max_length=20)
    start_date = models.DateTimeField(default=datetime.datetime.now)
    due_date = models.DateTimeField(default=datetime.datetime.now)

    def __str__(self):
        return self.text[:60] + "..."

class Progress(models.Model):  
    
    project = models.ForeignKey(Project, on_delete=models.CASCADE) 
    name = models.ForeignKey(Todo, on_delete=models.CASCADE)
    start_date = models.DateTimeField(default=datetime.datetime.now)
    due_date = models.DateTimeField(default=datetime.datetime.now)

    def __str__(self):
        return self.text

'''

【问题讨论】:

  • 你想表明一个 Todo 有一个与之相关的特定状态(正在进行中)。你不会通过创建另一个复制的 Todo 模型来处理这个问题。最简单的解决方案是简单地在 Todo 模型上放置另一个字段来指示状态。
  • @aris 我不知道该怎么做,请您解释一下吗?
  • 我想我现在知道你的意思了@aris 谢谢

标签: python django


【解决方案1】:

我建议只上一堂课,并多排一排来说明它们是否在进行中。这将使您免于一遍又一遍地创建和删除 django 和 DB 对象,因为它们在它们的生命周期中是相同的信息。您可以通过以下几种方式实现此目的:跟踪完整性百分比的浮点字段,或者只是一个布尔值。为简单起见,我将使用布尔值。

`class Todo(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    name = models.CharField(max_length=20)
    start_date = models.DateTimeField(default=datetime.datetime.now)
    due_date = models.DateTimeField(default=datetime.datetime.now)
    in_progress = models.BooleanField(default=False)

    def __str__(self):
        return self.name`

然后在您的视图中,您可以查询那些正在进行或未进行的任务。如上所述,您还可以使用浮点字段,然后搜索任何大于 0 的值。

【讨论】:

  • 这是一个好主意,也是我找到答案的好方向,谢谢哥们,如果没有其他答案,我会接受你的答案。
  • 我担心在 HTML 中显示这些数据,因为在我更改状态后,我不希望它处于相同位置,我有另一个位置来显示正在进行的任务,所以我'不确定改变状态能否实现这一目标?
  • 您可以在视图中将它们声明为不同的变量,并将它们作为不同的元素传递。例如:views.py from django.shortcuts import render from .models import Todo def todo_with_progress(request): not_started = Todo.objects.filter(in_progress=False) started = Todo.objects.filter(in_progress=True) context = { 'not_started': not_started, 'started': started,} return render(request, 'someHTMLTemplate.html', context) 然后您应该能够通过 html 文档上的 jinja 模板挂钩访问它们并分别操作它们。跨度>
  • 另外,很抱歉没有在我的评论中呈现为代码。如果你把它放在你的想法中并将它操纵成语法 python,它就会有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
相关资源
最近更新 更多