Найти - Пользователи
Полная версия: Помогите разобраться с ManyToMany
Начало » Django » Помогите разобраться с ManyToMany
1
quadright
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'

Как правильно прикрутить .values()?
Пробую так views.py:
def test(request):
    pizzas = models.pizza.objects.all().values('title','id','toppings__title')
    return render_to_response( 'test.html', locals(), RequestContext(request) )
В шаблоне test.html
{% for pizza in pizzas %}
    {{ pizza.title }}
    {% for item in pizza.toppings.all %}
        {{ item.toppings__title }}
    {% endfor %}
{% endfor %}
Не пойму как быть, не хочется делать выборку "*"
romankrv
С выражением и расстановкой прочитайте и вслух
https://docs.djangoproject.com/en/1.5/topics/db/aggregation/#values

должно помочь. I guarantee!
alrusdi
Зачем вы используете ORM там где не хочется делать выборку “*” не хочется использовать ORM?
Пишите sql запросы - ничего зазорного в этом нет.

А если все таки захотите использовать ORM, то пишите оптимально
models.pizza.objects.prefetch_related('toppings').all()
И тогда ваш цикл в шаблоне не будет делать стотыщ запросов на БД, а сделает только два Получить все пиццы, Получить все добавке к пиццам
quadright
romankrv
С выражением и расстановкой прочитайте и вслух https://docs.djangoproject.com/en/1.5/topics/db/aggregation/#valuesдолжно помочь. I guarantee!

Читал, не нашел решения. Покажи на моём примере или только в сторону документации можешь отправлять?
romankrv
quadright
На сокровенные вопросы документация отвечает четко и ясно. Если не помогает, то читай еще раз.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB