Возвращение списка из запроса к таблице Django

Помогите, пожалуйста, с последним шагом запроса в Django view.

У меня есть две таблицы.

class Item(models.Model):
    class Meta:
        verbose_name_plural = 'Items'

    name = models.CharField(max_length=30, null=True, blank=True)

    def __str__(self):
        return self.name


class Select(models.Model):
    item = models.ForeignKey('Item', null=True, blank=True, on_delete=models.SET_NULL)
    name = models.CharField(max_length=30, null=True, blank=True)

    def __str__(self):
        return self.name


По сути, Item - это категория. Записи в таблице Select ссылаются на Item как на категорию, Item может быть либо 'metrics', 'consumption', либо 'demographics'. Я хочу получить все записи из таблицы Select, которые находятся в категории 'demographics'.

У меня есть следующий код:

list-to-pass = Select.objects.filter(item__name='demographics').values()

Это возвращает следующее:

<QuerySet [{'id': 1, 'item_id': 3, 'name': 'Age Breakdown'}, {'id': 2, 'item_id': 3, 'name': 'Work Status'}, {'id': 3, 'item_id': 3, 'name': 'Occupation'}, {'id': 4, 'item_id': 3, 'name': 'Industry'}, {'id': 5, 'item_id': 3, 'name': 'Nationality'}, {'id': 6, 'item_id': 3, 'name': 'Education'}, {'id': 7, 'item_id': 3, 'name': 'Commuting'}, {'id': 8, 'item_id': 3, 'name': 'Leave Home'}, {'id': 9, 'item_id': 3, 'name': 'Travel Time'}, {'id': 10, 'item_id': 3, 'name': 'Car Ownership'}, {'id': 11, 'item_id': 3, 'name': 'Internet'}, {'id': 12, 'item_id': 3, 'name': 'Affluence'}]>

но я бы хотел получить что-то вроде:

['Age Breakdown','Work Status','Occupation','Industry','Nationality','Education','Communting',
                 'Leave Home','Travel Time', 'Car Ownership','Internet', 'Affluence']  

Спасибо за любую помощь, которую вы можете предложить.

Тогда вам придется самостоятельно извлекать значения

# variable names couldn't contain dash(-)

list_to_pass = Select.objects.filter(item__name='demographics').values()
only_names = [ obj.name for obj in list_to_pass ]

@Resley Rodrigues решение лучше моего, но я должен показать вам, что вы можете написать обычный код на python для получения и изменения значений самостоятельно.

Вы можете использовать values_list, который похож на values(), который вы использовали, но вместо того, чтобы возвращать набор dicts, он возвращает набор кортежей
. Поскольку вам нужны только кортежи name, вы можете сплющить список кортежей до простого списка

Select.objects.filter(item__name='demographic').values_list('name', flat=True)
Вернуться на верх