我想从餐厅模型中获取餐厅ID,并将其用于Lunchmenu列表视图中的href。真的不知道如何从这里前进。我在模板中尝试了“restaurants_list”的for循环,但并不真正了解如何从列表中只获取一个Id。
有没有办法在模板中执行此操作? 我应该以某种方式更改视图吗?
型号:
class LunchMenu(models.Model):
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
class Restaurant(models.Model):
manager = models.ForeignKey(User, on_delete=models.CASCADE)
restaurant_name = models.CharField(max_length=100)
列表视图:
class LunchMenuListView(ListView):
template_name = "lunchmenus/lunchmenu_home.html"
model = LunchMenu
def get_context_data(self, **kwargs):
context = super(LunchMenuListView, self).get_context_data(**kwargs)
context["restaurants_list"] = Restaurant.objects.all()
return context
模板:
<div class="row">
{% for lunchmenu in lunchmenu_list %}
<div class="col-lg-4 col-sm-6 portfolio-item">
<div class="card h-100">
<a href="/restaurants/{{restaurant.id}}"><img class="card-img-top" src="http://placehold.it/350x200" alt=""></a>
<div class="card-body">
<h4 class="card-title">
<a href="#">{{lunchmenu.restaurant}}</a>
</h4>
<p class="card-text">{{lunchmenu.description | safe}}</p>
</div>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
答案 0 :(得分:3)
为什么不简单地使用restaurant
项的lunchmenu
字段,如下所示:
<a href="/restaurants/{{ lunchmenu.restaurant.id }}">
请注意,以这种方式使用硬编码的网址不是最佳做法,您应该使用Django的内置url模板标记并使用命名路由,这将为您提供更强大的解决方案尊重你的网址方案的最终变化:
<a href="{% url 'restaurants:restaurant-detail' id=lunchmenu.restaurant.id %}">
(假设您的restaurants:restaurant-detail
中定义了urls.py
路由,其中restaurant.id
为参数