我有一个待办事项网站,允许用户在某个列表中添加提醒,例如工作,学校,杂货等。但是,我对如何获取列表名称及其项目显示有些迷惑。

Models.py:

class RemindList(models.Model):     parent_user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)     title = models.CharField(max_length=50)   class Reminder(models.Model):     remind_types = [('Regular', 'Regular'), ('Long Term', 'Long Term')]     title = models.CharField(max_length=100)     description = models.TextField()       remind_time = models.DateTimeField(blank=True)      parent_user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)     parent_list = models.ForeignKey(RemindList, on_delete=models.CASCADE, null=True)     type_of_remind = models.CharField(max_length=12, choices=remind_types, default='Regular')     complete = models.BooleanField(default=False) 

Views.py:

@login_required(login_url='/login') def home(request):     user = get_object_or_404(User, username=request.user.username)     context = {         'events': ToDoItem.objects.filter(parent_user=user),         'reminders': Reminder.objects.filter(parent_user=user, type_of_remind='Regular'),         'long_term_reminders': Reminder.objects.filter(parent_user=user, type_of_remind='Long Term'),          'remind_list_items': RemindList.objects.filter(parent_user=user),     }     return render(request, 'main/home.html', context) 

我可以遍历列表名称,并计划只遍历它们,然后将Reminder.objects.filter(parent_user=user, type_of_remind='Regular', parent_list=list_name)到上下文中。 但是,没有办法在html端循环遍历它们(无法进行for循环,因为还有其他上下文类型),并且您不能在html端过滤它们(如果我错了,请纠正我)。 还有另一种方法吗?

===============>>#1 票数:1 已采纳

好的,我花了几读,但是如果我理解的是正确的,那么您希望能够遍历ReminderList对象,并在每个对象下列出Reminder项目。

我的建议是在ReminderList中添加一个方法,以返回该列表中的项目,然后可以在模板中执行类似的操作

{% for list in reminder_lists %}   ... List header stuff goes here ...   {% for item in list.get_reminder_items %}      ... Print the item ...   {% endfor %} {% endfor %} 

(Django模板语言在该对象中可能会有点有趣.identifier可以映射到属性或对象方法-这对于此类情况很有用)。

  ask by Silent Beast translate from so

本文未有回复,本站智能推荐: