Как запросить ManyToManyField для получения атрибута из другой модели

#python #database #sqlite #django-models

#питон #База данных #sqlite #django-модели

Вопрос:

Вот мои Model_Items:

 class Model_Items(models.Model):
    title = models.CharField(max_length=20, default='')
    manufacturer = models.CharField(max_length=10, default='')
    make = models.CharField(max_length=20, default='')
    model = models.CharField(max_length=20, default='')
    sku = models.CharField(max_length=10, default='')
 

С которым у По многотоманские отношения:

 class Po(models.Model):
    po_number = models.CharField(max_length=10, default='')
    receive_date = models.DateField(auto_now=False, auto_now_add=False, default='')
    model_item = models.ManyToManyField(Model_Items)
    site_code = models.CharField(max_length=10, default='')
    comment = models.TextField(max_length=50, default='')
 

Теперь, на мой взгляд, я задаю этот вопрос :

 def po_page(request, *args, **kwargs):
    po = Po.objects.all()

    context = {
        'po_list': po,
    }
    return render(request, 'po/po_page.html', context)
 

На моем шаблоне:

 {% for my_po_list in po_list %}
    <div class="card">
        <table class="table table-bordered" >
            <tr>
                <td class="col-md-2">{{ my_po_list.po_number }}</td>
                <td class="col-md-2">{{ my_po_list.receive_date }}</td>
                <td class="col-md-2">{{ my_po_list.model_item.all }}</td>
                <td class="col-md-2">{{ my_po_list.site_code }}</td>
                <td class="col-md-2">{{ my_po_list.comment }}</td>
                <td class="col-md-2">{{ model }}</td>
            </tr>
        </table>
    </div>
{% endfor %}
 

Я изо всех сил пытался получить get title из класса Model_Items и отобразить его.
Однако линия с:

 {{ my_po_list.model_item.all }}
 

Вместо этого отображается следующее
<QuerySet [<Model_Items: Mac 16 Dev>, <Model_Items: Mac 13 Std>]> .

Я знаю, что строка предназначена для этого, но как я могу отфильтровать ее, чтобы она просто отображала заголовок Model_Items.

Ответ №1:

Я бы рекомендовал использовать цикл for для перебора элементов модели. Я также добавил, что вы должны сделать, чтобы добавить запятые между заголовками.

 <td class="col-md-2">
    {% for model_item in my_po_list.model_item.all %}
        {{model_item. title}}{% if not forloop.last %}, {% endif %}
    {% endfor %}
</td>