Как преобразовать строку QuerySet в строку String в шаблоне Django?
Шаблон Django показывает категории как, например, <QuerySet [<Category: Fashion>]> Я хочу, чтобы он показывал просто как Fashion.
index.html
{% for auction in auctions %}
<li>Auction: {{ auction.title }} Content: {{ auction.content }} Price: {{auction.price}} Category: {{ auction.category.all|slice:":1" }} <img src="{{auction.pic}}" alt="{{auction.title}} pic"> </li>
{% endfor %}
models.py
class Category(models.Model):
FOOD = 'FO'
TOYS = 'TO'
FASHION = 'FA'
ELECTRONICS = 'EL'
HOME = 'HO'
NOTHING = 'NO'
CHOICECATEGORY = (
(FOOD,'Food'),
(TOYS,'Toys'),
(FASHION,'Fashion'),
(ELECTRONICS,'Electronics'),
(HOME,'Home')
)
category = models.CharField(max_length=300, choices=CHOICECATEGORY)
def __str__(self):
return self.category
class Auctionmodel(models.Model):
title = models.CharField(max_length=300)
content = models.TextField()
price = models.IntegerField()
pic = models.CharField(max_length=300, blank=True)
category = models.ManyToManyField(Category, related_name='Category')
categorysomething = Category.objects.filter(category=category).first()
views.py
def index(request):
return render(request, "auctions/index.html", {
"auctions": Auctionmodel.objects.all()
})
Если у вас есть объект QuerySet
, то шаблон покажет метод __repr__
этого объекта. Чтобы показать внутренние объекты, необходимо использовать цикл for
:
{% for category in auction.category.all %}
{{ category }} {{ category.category }}
{% endfor %}
или если вы действительно этого хотите (но это не является хорошей практикой):
{{ auction.category.first }}