Попытка сослаться на поле внешнего ключа ... Почему оно также отображает имя ссылочной таблицы? - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь отобразить данные из моего шаблона. У меня проблема с внешним ключом в таблице BattingStats, которая ссылается на playerid таблицы PlayerInfo. Когда я получаю его для отображения, данные для этого поля отображаются, но они заключены в скобки и им предшествует ReferencedTable object. Так что для меня это выглядит так PlayerInfo object (smithjo05). Зачем он это делает, и как мне заставить его просто показать playerid? Помощь оценена. Спасибо.

ПРОСМОТРЫ

def battingview(request):
    playerinfo = PlayerInfo.objects.all()
    playerstats = BattingStats.objects.filter(year=2018)
    return render(request, 'playerstats/battingRegStnrd2018.html', {'playerinfo':playerinfo,'playerstats': playerstats})

МОДЕЛИ

class BattingStats(models.Model):
    id = models.IntegerField(db_column='ID', primary_key=True)
    playerid = models.ForeignKey('PlayerInfo', models.DO_NOTHING, db_column='playerID', blank=True, null=True)
    player = models.CharField(db_column='Player', max_length=255, blank=True, null=True)
    hr = models.IntegerField(db_column='HR', blank=True, null=True)
    rbi = models.IntegerField(db_column='RBI', blank=True, null=True)
    ba = models.FloatField(db_column='BA', blank=True, null=True)

class PlayerInfo(models.Model):
    playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
    namefirst = models.CharField(db_column='nameFirst', max_length=255, blank=True, null=True)
    namelast = models.CharField(db_column='nameLast', max_length=255, blank=True, null=True)
    height = models.IntegerField(blank=True, null=True)
    debut = models.CharField(max_length=255, blank=True, null=True)
    finalgame = models.CharField(db_column='finalGame', max_length=255, blank=True, null=True)

HTML

            {% for index in playerstats %}
                <td>{{ index.playerid }}</td>
                <td>{{ index.year}}</td>
                <td>{{ index.age}}</td>
                <td>{{ index.team}}</td>
                <td>{{ index.league}}</td>
            {% endfor %}

{% for index in playerstats %}
    {{ index.playerid }}
{% endfor %}

Браузер

PlayerInfo object (smithjo05) 
PlayerInfo object (cruzne02)  
PlayerInfo object (jonesad01)

1 Ответ

1 голос
/ 18 января 2020

Вам просто нужно добавить __str__ метод к вашей PlayerInfo модели:

class PlayerInfo(models.Model):
    playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
    namefirst = models.CharField(db_column='nameFirst', max_length=255, blank=True, null=True)
    namelast = models.CharField(db_column='nameLast', max_length=255, blank=True, null=True)
    height = models.IntegerField(blank=True, null=True)
    debut = models.CharField(max_length=255, blank=True, null=True)
    finalgame = models.CharField(db_column='finalGame', max_length=255, blank=True, null=True)

    def __str__(self):
        return self.playerid

Это позволяет изменить представление экземпляра по умолчанию при преобразовании его в строку, для пример в шаблонах.

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