Список отображаемых имен из моделей Django - PullRequest
2 голосов
/ 20 марта 2010

У меня есть объект:

POP_CULTURE_TYPES = (
    ('SG','Song'),
    ('MV', 'Movie'),
    ('GM', 'Game'),
    ('TV', 'TV'),
)

class Pop_Culture(models.Model):
      name = models.CharField(max_length=30, unique=True)
      type = models.CharField(max_length=2, choices = POP_CULTURE_TYPES, blank=True, null=True)

Тогда у меня есть функция:

def choice_list(request, modelname, field_name):
     mdlnm = get.model('mdb', modelname.lower())
     mdlnm = mdlnm.objects.values_list(field_name, flat=True).distinct().order_by(field_name)
     return render_to_response("choice_list.html", {
           'model'  : modelname,
           'field'  : field_name,
           'field_list'  : mdlnm })

Это дает мне отдельный список всех записей типа в базе данных в переменной field_list, передаваемой в render_to_response. Но я не хочу список, который показывает:

SG

MV

Я хочу список, который показывает:

Песня

Фильм

Я могу сделать это на основе отдельных объектов, если бы я был в шаблоне

object.get_type_display

Но как мне получить список всех уникальных «типовых» записей в базе данных в качестве их полных имен для вывода в шаблон?

Надеюсь, этот вопрос был четко описан. , .

Ответы [ 2 ]

2 голосов
/ 20 марта 2010

Как насчет чего-то подобного в конце вашего choice_list ()?

def choice_list(request, modelname, field_name):
    # ...
    pct = dict(POP_CULTURE_TYPES)
    return [pct[key] for key in mdlnm]

Или в одной строке без вызова dict ():

    return [pct[1] for pct in POP_CULTURE_TYPES if pct in mdlnm]

Не красиво, но будет работать, пока не наткнешься на что-то лучшее.

1 голос
/ 01 июня 2011

Вы можете использовать:

OBJECT.get_FIELD_display()

Пример:

content = Pop_Culture.objects.get(...)

ctype = content.get_type_display()

Временные решения не нужны :)

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