Отображение элемента ManytoManyField в цикле запроса

Я хочу показывать элементы в цикле из класса, который я создал, но я не знаю, как вызвать элемент ManyToMany, не могли бы вы мне помочь?

class Tag(models.Model):
nametag = models.CharField(max_length=200, null=True)

class OA(models.Model):
tags = models.ManyToManyField(Tag)
...

Моя функция:

def home(request):
objetos = OA.objects.all()
return render(request, {'objetos': objetos})

Проблема:

{% for i in objetos %}
...
<tr>{{i.tags.nametag}}</tr>
{% endfor %}

В данном случае 'nametag' уже имеет значение, поэтому он не пуст. Я попробовал несколько вещей, но ничего не смог сделать, мне нужна помощь, пожалуйста.

Необходимо перечислить все i.tags.all(). Действительно, поскольку это ManyToManyField, OA может иметь ноль, один или более связанных Tag, а Tag может иметь ноль, один или более OA объектов.

Таким образом, вы можете реализовать это с помощью;

<tr>{% for tag in i.tags.all %} {{ tag.nametag }}{% endfor %}</tr>

В представлении можно предварительно получить связанные Tag объекты, чтобы избежать дополнительного запроса на OA объект:

def home(request):
    objetos = OA.objects.prefetch_related('tags')
    return render(request, {'objetos': objetos})
Вернуться на верх