Django Объекты TypeError не повторяются в шаблонах - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть две модели: одна - информация о клубе, а другая - структура игрока. поэтому я планирую на основе клубной итерации, в которой есть такие значения, как'test ',' odi ',' listA ', мне нужно представить соответствующую структуру игрока в моем шаблоне Django.

модели .py

class Clubstate(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

class PlayerStructure(models.Model):
    clubstate =  models.ForeignKey('Clubstate', on_delete=models.CASCADE,  related_name='clubstate')
    country = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, null=True,  related_name='identifier1')
    firstname =  models.CharField(max_length=255)
    lastname  =  models.CharField(max_length=255)
    imageUri =   models.ImageField(upload_to='images/', verbose_name='image')
    JerseyNumber = models.IntegerField()

    def __str__(self):
        return self.firstname + self.lastname

В views.py Я использую DetailView для представления данных.

class PlayerStatistics(DetailView):
    context_object_name = 'Clubstate_details'
    model = models.Clubstate
    template_name = 'CricketDetails/playerstatistics_details.html'

Шаблон html

<div class="jumbotron">
        <div class="container">
           <div class="row">
               {% for club in Clubstate_details  %}
                <h1>{{club.name</h1>

               {% endfor %} 
           </div>
        </div>
      </div>

Моя мысль, logi c похожа на

{% for club in clubs %}
    {{club.name}}
    {{club.player_structure.firstname}}
    {{club.player_structure.lastname}}
{% endfor%}

Так что для индивидуального клуба я получаю соответствующую структуру игрока. Я получаю TypeError: 'Clubstate' object is not iterable ошибку. Надеюсь, что это имеет смысл ...

1 Ответ

0 голосов
/ 28 апреля 2020

Подробное представление не даст список элементов, вместо этого оно дает только одно представление, поэтому измените DetailView на ListView и выполните итерацию по выводу

class PlayerStatistics(ListView):
    context_object_name = 'Clubstate_details'
    model = models.Clubstate
    template_name = 'CricketDetails/playerstatistics_details.html'

, если вы хотите, чтобы подробное представление можно было получить с помощью

{{ Clubstate_details.name }}

с DetailView

Экземпляр FK может быть доступен по

{% for obj in Clubstate_details.playerstructure_set.all %}

{{ obj.firstname }}

{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...