【问题标题】:Can't print the value of models.ManyToManyField always return None无法打印模型的值。ManyToManyField 总是返回 None
【发布时间】:2020-07-13 16:59:02
【问题描述】:

我正在尝试将 ManyToManyField 的值打印到模板,但它总是返回 accounts.Product.None,我认为 ManyToManyField 返回一个列表!但还是不知道怎么输出

{{order.product}}

型号

class Product(models.Model):

name = models.CharField(max_length=200)
tags = models.ManyToManyField(Tags)

def __str__(self):
    return self.name




class Order(models.Model):
product = models.ManyToManyField(Product)
date_created = models.DateTimeField(auto_now_add=True)

查看

def home(request):
products = Product.objects.all()
orders = Order.objects.all()

context = {'total_orders': total_orders,
           'orders': orders
           }

return render(request, 'accounts/dashboard.html', context)

模板

          {% for order in orders %}
            <tr>
              <th scope="row">{{order.id}}</th>
              <td>{{order.product}}</td>
              <td>{{order.date_created}}</td>
              <td></td>
              <td></td>
            </tr>
          {% endfor %}

【问题讨论】:

  • for 循环因缺少空格而未启动 {% for order in orders %}
  • 谢谢我在清理代码放在这里时错过了它,仍然没有解决问题
  • 您的上下文是否返回orders 中的任何对象?
  • 是的,它返回所有这里的订单 = Order.objects.all()
  • 你试过{{ order.product }}吗?

标签: python python-3.x django django-models django-views


【解决方案1】:

像这样更改模板:

      {% for order in orders %}
        <tr>
          <th scope="row">{{order.id}}</th>
          <td>{% for product in product.order.all %}
            <li>{{ product }}</li>
            {% endfor %}</td>
          <td>{{order.date_created}}</td>
          <td></td>
          <td></td>
        </tr>
      {% endfor %}

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多