Форум сайта python.su
models.py:
class topping(models.Model): title = models.CharField(max_length=50) def __unicode__(self): return self.title class Meta: db_table = 'test_topping' class pizza(models.Model): title = models.CharField(max_length=50) toppings = models.ManyToManyField(topping, through='links') def __unicode__(self): return self.title class Meta: db_table = 'test_pizza' class links(models.Model): topping = models.ForeignKey(topping) pizza = models.ForeignKey(pizza) date_joined = models.DateTimeField() invite_reason = models.CharField(max_length=64) class Meta: db_table = 'test_links'
def test(request): pizzas = models.pizza.objects.all().values('title','id','toppings__title') return render_to_response( 'test.html', locals(), RequestContext(request) )
{% for pizza in pizzas %} {{ pizza.title }} {% for item in pizza.toppings.all %} {{ item.toppings__title }} {% endfor %} {% endfor %}
Отредактировано quadright (Окт. 23, 2013 07:24:25)
Офлайн
С выражением и расстановкой прочитайте и вслух
https://docs.djangoproject.com/en/1.5/topics/db/aggregation/#values
должно помочь. I guarantee!
Офлайн
Зачем вы используете ORM там где не хочется делать выборку “*” не хочется использовать ORM?
Пишите sql запросы - ничего зазорного в этом нет.
А если все таки захотите использовать ORM, то пишите оптимально
models.pizza.objects.prefetch_related('toppings').all()
Офлайн
romankrv
С выражением и расстановкой прочитайте и вслух https://docs.djangoproject.com/en/1.5/topics/db/aggregation/#valuesдолжно помочь. I guarantee!
Офлайн
quadrightНа сокровенные вопросы документация отвечает четко и ясно. Если не помогает, то читай еще раз.
Офлайн