提问人:RickRugby 提问时间:10/25/2023 最后编辑:George Lords of CastleRickRugby 更新时间:10/28/2023 访问量:28
我想根据按下的按钮筛选查询集
I want to filter a queryset according to which button is pressed
问:
我对 Django 很陌生。我有一个任务模型,它有各种字段,例如日期、任务名称、描述、is_completed、重要性级别。我根据在模板中单击哪个按钮来过滤结果。我真的被困住了!这是我的代码
'从 Django.db 导入模型
# Create your models here.
class Task(models.Model):
IMPORTANT_CHOICES = [("high","high"),("mid","mid"),("low","low")]
taskName = models.CharField(max_length = 100)
taskDescription = models.CharField(max_length = 100)
createdDate = models.DateField(auto_now_add = True)
finishDate = models.DateField(blank=True, null=True)
last_access = models.DateField(auto_now = True)
importance = models.CharField(max_length = 20, choices=IMPORTANT_CHOICES, default="low", blank=True, null=True)
daysToFinish = models.IntegerField(blank=True, null=True)
completed = models.BooleanField(default = False)
def __str__(self):
return self.taskName
views.py
def all_tasks(request, pk):
person = Person.objects.get(id=pk)
all_t = person.task_set.all()
tasks = all_t
#calulate day to complete task:
date_now = datetime.now()
date_now_date = date_now.date()
for i in tasks:
finish_date = i.finishDate
diff = finish_date - date_now_date
diff_in_days = diff.days
i.daysToFinish = diff_in_days
i.save()
if request.POST.get('s') == "completed":
tasks = tasks.filter(completed = True)
elif request.POST.get('s') == "notcompleted":
tasks = tasks.filter(completed = False)
context ={"tasks":tasks}
elif request.POST.get('s') == "high":
tasks = tasks.filter(importance = "high")
context ={"tasks":tasks}
print("high")
print(tasks)
elif request.POST.get('s') == "mid":
tasks = tasks.filter(importance = 'mid')
context ={"tasks":tasks}
print(tasks)
print("mid")
elif request.POST.get('s') == "low":
tasks = tasks.filter(importance = 'low')
context ={"tasks":tasks}
print(tasks)
print("low")
tasks = list(tasks)
context = {"tasks":tasks}
return render(request, 'all_tasks.html' ,context)
I then have a template
<!-- code for sort and select button -->
<div class="container-fluid">
<div class="row">
<form class="" action="{% url 'tasks' user.person.id %}" method="post">
{% csrf_token%}
<div class='col-lg-6'>
<input type="hidden" name="s" value="completed">
<button class="btn1" type="submit" name="button">Completed</button>
</div>
<div class='col-lg-6'>
<input type="hidden" name="s" value="notcompleted">
<button class="btn1" type="submit" name="button">Not Completed</button>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class='col-lg-4'>
<input type="hidden" name="s" value="high">
<button class="btn1" type="submit" name="button">High</button>
</div>
<div class='col-lg-4'>
<input type="hidden" name="s" value="low">
<button class="btn1" type="submit" name="button">Low</button>
</div>
<div>
<input type="hidden" name="s" value="mid">
<button class="btn1" type="submit" name="button">Medium</button>
</form>
</div>
</div>
</div>'
答: 暂无答案
评论