Я пытаюсь показать некоторую информацию в HTML из запроса, заданного в Django. Но я не знаю, как это сделать.Django возвращает объекты в HTML из вида с запросом?
Идея заключается в том, когда я открываю страницу, это покажет мне имя пользователя и связанные с ним соревнования. Пользователь может создать конкуренцию в admin Django.
Мой адрес это.
url(r'^home/(?P<company_name>\w+)', HomeView.as_view(), name='home'),
Модель.
class Competition(models.Model):
name = models.CharField(max_length=200,null=False)
image = models.CharField(max_length=200, null=False)
url = models.CharField(max_length=200, null=False)
startingDate = models.DateTimeField(null=False)
deadline = models.DateTimeField(null=False)
description = models.CharField(max_length=200, null=False)
user = models.ForeignKey(User, null=False)
В views.py
class HomeView(ListView):
model = User, Competition
template_name = 'home.html'
context_object_name = 'company'
def get_queryset(self, **kwargs):
company = self.kwargs['company_name']
try:
queryset = User.objects.filter(username__exact=company).get()
except User.DoesNotExist:
queryset = None
return queryset
Код выше вернуть мне Пользователя, когда я пишу в URL-адрес что-то вроде этого: http://127.0.0.1:8000/home/diego/
HTML-дома показать мне имя пользователя для пример:
{% if company %} <div class="jumbotron"> <div class="container">
{{company.username}} </div></div> {% endif %}
Но мне нужно показать конкурсы, созданные пользователем с помощью a 'for' в HTML.
Я попытался с цепями вернуть два набора запросов, но я не работаю.
Также это.
queryset2 = Competition.objects.filter(user__username__exact=company).get()
Ошибка() показать мне ошибку, которая возвращает больше одного объекта. Это логично, потому что у пользователя есть 3 соревнования, связанные с этим.
Какой-то маленький пример для этого? или любая идея для решения моего вопроса.
Большое спасибо
Я попробовал это, но объект «Пользователь» не итерацию (Очевидно, что это только один)
class HomeView(ListView):
model = User
template_name = 'home.html'
context_object_name = 'company'
def get_queryset(self, **kwargs):
company = self.kwargs['company_name']
try:
queryset = User.objects.filter(username__exact=company).get()
queryset2 = Competition.objects.filter(user__username__exact=company)
result_list = list(chain(queryset, queryset2))
except User.DoesNotExist:
result_list = None
return result_list
Я пытался и пытался и удалить ГЭТ() для первого набора запросов и возврата данных в HTML.
Как я могу получить доступ к полям списка в HTML, но с классом. Если я печатаю переменную 'company', результат таков.
[<User: diego>, <Competition: test1>, <Competition: test2>]
Но с 'for' просто получаю строковые значения. Как я могу разница в 'User' и 'Конкурс'
{%for compa in company%}
{{compa}}
{%endfor%}
результат: диего test1 test2
Большое спасибо. Випул Вишну, он работает нормально. –