#python #django #templates #view
#python #django #шаблоны #Вид
Вопрос:
views.py
@login_required
def ManageDomain(request):
AssocNotAuthDomains = Tld.objects.filter(FKtoUser_id=request.user,auth=0)
AssocAuthDomains = Tld.objects.filter(FKtoUser_id=request.user,auth=1)
return render(request, 'site/account/template.html', {
'AssocNotAuthDomains':AssocNotAuthDomains,
'AssocAuthDomains':AssocAuthDomains
})
template.html
{% if AssocAuthDomains or AssocNotAuthDomains %}
<div class="acctDomains">
<h3 class="Titles"><img src="{% static "img/templated/acct/AuthDomainSm.png" %}" width="22" height="22" alt="Authorized Domain(s)" /> Verified Domains</h3>
<ul>
{% for authdomain in AssocAuthDomains %}
<li>{{ authdomain }}<span><a class="scan" href="/Account/PerformScan/?d={{ authdomain }}">Scan now</span></a></li>
{% endfor %}
</ul>
<h3 class="Titles"><img src="{% static "img/templated/acct/UnAuthDomain.png" %}" width="22" height="22" alt="Unverified Domain(s):" /> Unverified Domains</h3>
<ul>
{% for notauthdomain in AssocNotAuthDomains %}
<li>{{ notauthdomain }}<span><a class="scan" href="Verify Now">Verify now</span></a></li>
{% endfor %}
</ul>
</div><!--acctDomains-->
Это выводит:
Tld object (1)
Tld object (2)
вместо значения, например websiteabc.com
Что я делаю не так?
Спасибо
Ответ №1:
Вы должны реализовать __str__
в своей модели, если хотите отобразить экземпляр модели подобным образом
class Tld(models.Model):
def __str__(self):
# return something meaningful here like self.some_attribute
Или вы должны явно использовать атрибут в шаблоне, подобный этому
{{ authdomain.some_attribute }}
В противном случае python не знает, как получить что-то значимое из объекта для отображения.
Ответ №2:
Это потому, что вы пытаетесь отобразить весь объект, а не значение.
Вам нужно заменить
{{ notauthdomain }}
с
{{ notauthdomain.name }}
замените ‘name’ именем поля вашего значения — websiteabc.com