【问题标题】:Django QuerySet displays improper stringDjango QuerySet 显示不正确的字符串
【发布时间】:2017-01-06 15:49:39
【问题描述】:

在我的视图中渲染 ManyToMany 字段时遇到问题。

#模型:

from django.db import models


class Ingredient(models.Model):
    content = models.CharField(max_length=300, default='')

    def __str__(self):
        return self.content


class Drink(models.Model):
    ingredient = models.ManyToManyField(Ingredient)
    title = models.CharField(max_length=300)
    description = models.TextField(max_length=500)

    def __str__(self):
        return self.title

#查看:

from django.shortcuts import render
from .models import Drink, Ingredient


def index(request):
    drinks = Drink.objects.all()
    context = {'drinks': drinks}
    return render(request, 'drinks/index.html', context)

#模板:

{% for i in drinks %}
    <h3>{{ i.title }}</h3>
    <p><b>Description:</b> <br>{{ i.description }}</p>
    <p>{{ i.ingredient.all }}</p>
{% endfor %}

这是我的网站:

Screw driver

Description: 
Good drink made of pure vodka and California cultured oranges.

<QuerySet [<Ingredient: Vodka>, <Ingredient: Orange juice>]>

我找不到任何合适的方法来过滤或格式化最后一个字符串。 有人有想法吗?

【问题讨论】:

  • 你已经知道如何迭代drinks。为什么不对i.ingredient.all 做同样的事情?它们都是查询集。

标签: python django django-models django-views django-queryset


【解决方案1】:

您也需要对成分进行迭代。

{% for i in drinks %}
    <h3>{{ i.title }}</h3>
    <p><b>Description:</b> <br>{{ i.description }}</p>
    {% for j in i.ingredient.all %}
       <p>{{ j }}</p>
{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2022-07-04
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多