values_list () в query_set показывает только цифры, но не названия стран - PullRequest
1 голос
/ 25 апреля 2019

Я выбрал свое поле с 'values_list', который содержит названия стран.Но то, что я получаю, это номера country_id.

Я уже использовал flat = True, но это ничего не помогло.

my models.py:

class Report(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    church_name = models.CharField(max_length=255)
    area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, blank=True)
    country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True, blank=True)
    water_baptism = models.IntegerField(default=0)
    holy_ghost = models.IntegerField(default=0)

    def __str__(self):
        return '%s' % self.area

    def get_absolute_url(self):
        return reverse('users:report_view')

my views.py:

def report_cities(request, pk):
    countries = Report.objects.values_list('country', flat=True)

    context = {
        'countries':countries
    }
    return render(request, 'users/report_countries.html', context)

мой HTML

  <h1>Report Countries</h1>

  {% for country in countries %}
  {{country}}
  {% endfor %}


1 Ответ

3 голосов
/ 25 апреля 2019

Используйте Report.objects.values_list('country__name', flat=True) (при условии, что это поле названия страны в модели страны).По умолчанию django будет отображать идентификатор объекта, если поле не указано.

EG, если модель вашей страны была

class Country(models.Model):
    name = Charfield()
    another_field = ...

Приведенный выше запрос теперь возвращает список имен.

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