【发布时间】:2012-07-08 02:17:37
【问题描述】:
我目前正在我的views.py中做这样的事情:
def home(request):
ingredients = Ingredience.objects.all()
drinks = Ingredience.objects.filter(category_id=1)
fruits = Ingredience.objects.filter(category_id=2)
etc.
meats = Ingredience.objects.filter(category_id=25)
return render_to_response('home.html', {'ingredients': ingredients, 'drinks': drinks, 'fruits': fruits, 'meats': meats,}, context_instance=RequestContext(request))
这是我的models.py:
from django.db import models
class IngredienceCategory(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
class Ingredience(models.Model):
name = models.CharField(max_length=30)
category = models.ForeignKey(IngredienceCategory, null=True, blank=True)
def __unicode__(self):
return self.name
class Food(models.Model):
name = models.CharField(max_length=30)
ingredients = models.ManyToManyField(Ingredience)
def __unicode__(self):
return self.name
django 中是否有一些技巧可以动态生成模板对象(即饮料、水果、肉类)?我什至不知道从哪里开始,但我想这样做:遍历所有成分对象并返回字典,该字典将保存按类别分组的项目(如第一个示例中所示)。
我正在尝试解决两个问题:
- 每个类别对象的代码几乎相同,因此有一个 很多冗余。
- 每次添加新的时我都必须更新views.py 分类到数据库中。
编辑:在我的模板中,我需要能够通过其自己的变量(例如 {{ Drinks }})访问每个对象(即饮料、水果、肉类等)。
【问题讨论】:
-
动态是什么意思?动态基于什么?
-
@DanielRoseman 动态我的意思是我不必在views.py 中一个一个地手动输入对象,但它们会根据数据库中的数据自动生成。不知道我是否足够清楚。
-
恐怕我还是不太明白问题出在哪里。当然,可以使用 Category.objects.all() 从数据库中获取类别。你到底卡在哪里了?
-
@DanielRoseman 我编辑了我的原始帖子。在我的模板中,我需要能够通过自己的变量(例如{{饮料}}访问每个对象(即饮料、水果、肉类等)。目前我正在通过在我的视图中手动指定每个对象来做到这一点。我想自动完成。这是否澄清了问题?
标签: django django-views