我想为两个条件使用一个视图(URL)。
在我的应用程序中,“所有者”为他们管理的路线创建每日计划,并在一天内更新计划/结果。
class DailyRoute(models.Model):
owner = models.ForeignKey(Owner)
route = models.ForeignKey(Route)
driver = models.ForeignKey(Driver)
stops = models.PositiveSmallIntegerField(default=0, ...
on_duty_hours = models.TimeField(default=datetime.time...
date = models.Datefield(...
finalized = models.Boolean(...
基本上,有3个数据库条件,其中2个我正在尝试用于视图:
日期/路线没有数据库行。这意味着所有者尚未创建当天的计划。 (例如,如果DailyRoute.objects.filter(stage = 0).count()== 0:...)
日期/路线的数据库行,其中finalized = False。这意味着已为日期/路线对创建了一个计划,并且可以对其进行编辑。 (例如DailyRoute.objects.filter(stage = 0).count()> 0)
日期/路线的数据库行,其中finalized = True。这意味着当天的计划/更新已完成,不允许进一步编辑。 (例如,如果DailyRoute.objects.filter(stage = 1).count()> 0:...)
作为日常活动,我希望用户转到某个网址(例如/ account / daily),然后会看到其中一个视图:
a)如果没有所有者路线(上面的第1点),则提供“添加”按钮,为特定日期(即下一个工作日)的每个拥有路线添加一行。成功时,按照下面的b)显示DailyRoute List。
b)如果所有者路线存在于0状态,则显示该列表(即不显示“添加”按钮。)
请注意,所有者永远不能在0状态下拥有多个日期/路由对。他们必须在0州的路线上完成当天的活动才能规划下一天的路线。
或者,如果路径处于0状态,则可以使用具有禁用的“添加”按钮的视图和路由列表。相反,如果没有找到路线,将启用“添加”按钮和一个空的路由列表。
现在我可以使用单独的URL执行此操作,一个用于添加每日计划,另一个用于显示stage = 0中的路由列表,但在同一个URL上执行此操作会更好。
我无法弄清楚如何/在哪里添加过滤器到视图来执行此操作。 提前感谢您的指导。
答案 0 :(得分:-1)
嗯,听起来像一个简单的if/else
语句可以解决这个问题:
class YourView(View):
if first_condition:
return render('first_template')
else if second_condition:
return render('second_template')
else:
return render('third_template')
或者,如果您想使用一个模板,可以在模板中执行此操作if/else
。我还建议您从您的视图中发送该标志:
class YourView(View):
...
routes_exist = DailyRoute.objects.filter(stage = 0).exists()
return render('template.html', {'routes_exist': routes_exist})
然后在你的模板中:
{% if routes_exsist %}
<button> Add </button>
{% endif %]
希望它有所帮助!