【发布时间】:2015-10-17 05:13:09
【问题描述】:
我正在尝试在 html 文件上呈现信息,但信息似乎无法正确通过。
在下面的 html 中,它应该呈现与其菜单标题相对应的项目。
例如
标题:甜点
商品:冰淇淋
描述:美味的巧克力冰淇淋洒
$:3.00
标题:电源
项目:咖喱
说明:咖喱很辣
$:10.00
我面临的问题是 menuitems 中的所有项目都出现在所有菜单标题下。标题呈现正常。
例如
标题:甜点
商品:冰淇淋
描述:美味的巧克力冰淇淋洒
$:3.00
标题:电源
商品:冰淇淋
描述:美味的巧克力冰淇淋洒
$:3.00
html
{% for menu in menus %}
<section id="services">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h2 class="section-heading">Title {{ menu.title }}</h2>
<hr class="primary">
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 text-center">
{% for item in menuitems %}
<p>Item {{ item.item_name }}</p>
<p>Description {{ item.description }}</p>
<p>$ {{ item.price }}</p>
{% endfor %}
</div>
</div>
</div>
</section>
{% endfor %}
如何确保信息显示在正确的标题下?
views.py
def single(request, slug):
user = request.user
restaurant = Restaurant.objects.get(slug=slug)
template = 'restaurants/single.html'
menus = restaurant.menutitle_set.all()
menuitems = MenuItem.objects.filter(title=menus)
context = {
'restaurant': restaurant,
'menus': menus,
'menuitems': menuitems,
}
return render(request, template, context)
models.py
class Restaurant(models.Model):
user = models.CharField(max_length=250)
restaurant_name = models.CharField(max_length=250)
restaurant_address1 = models.CharField(max_length=250)
restaurant_address2 = models.CharField(max_length=250)
restaurant_state = models.CharField(max_length=120, choices=STATE_CHOICES)
slug = models.SlugField(unique=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __unicode__(self):
return self.restaurant_name
def get_absolute_url(self):
return reverse("single_restaurant", kwargs={"slug": self.slug})
class MenuTitle(models.Model):
restaurant = models.ForeignKey(Restaurant)
title = models.CharField(max_length=120)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
active = models.BooleanField(default=True)
def __unicode__(self):
return self.title
class MenuItem(models.Model):
title = models.ForeignKey(MenuTitle)
item_name = models.CharField(max_length=2000)
description = MarkdownField(max_length=2000, null=True, blank=True)
price = models.CharField(max_length=2000)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
active = models.BooleanField(default=True)
def __unicode__(self):
return self.item_name
admin.py
class MenuTitleInline(admin.StackedInline):
model = MenuTitle
extra = 1
class MenuItemInline(admin.StackedInline):
model = MenuItem
extra = 1
class RestaurantAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("restaurant_name",)}
class Meta:
model = Restaurant
inlines = [MenuTitleInline]
admin.site.register(Restaurant, RestaurantAdmin)
class MenuTitleAdmin(admin.ModelAdmin):
list_display = ["restaurant", "title"]
class Meta:
model = MenuTitle
inlines = [MenuItemInline]
admin.site.register(MenuTitle, MenuTitleAdmin)
【问题讨论】:
标签: django django-models django-templates django-admin django-views