Отобразить (в шаблоне) выбор из Model - Django - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно вызвать поле выбора в Моделях из шаблона.
models.py

...
CAT = (
    ("1", "1"),
    ("2", "2"),
)
cat = models.CharField(max_length=2, choices=TYPE, default="")
...

views.py

def cat(request):
    my_model = Model.objects.all()
    return render(...{'post': post})

template.html

{% for i in my_model%}
    {{ i.cat }} 
    # This shows DUPLICATES if I have couple posts with same cat. 
    # I want to display uniques in choices (I am not interested in posts at all)
{% endfor %}

Так, как я могу вызвать выбор в модели из шаблона, не показывая дубликаты?

P.S : я прошел выбор документов, ничего не помогло: https://docs.djangoproject.com/en/2.0/ref/models/fields/#choices

Ответы [ 4 ]

0 голосов
/ 10 мая 2018

@ TommyL сказал:

views.py :

my_model = Model.objects.values('cat').distinct()

template.html:

{% for i in my_model %} 
    {{ i.cat }} 
{% endfor %}

Это решение работает для меня

0 голосов
/ 09 мая 2018

Я думал, вы спрашиваете, как отобразить значение в шаблонах.
Так что если вы хотите получить cat от вашей модели, это должно сработать с values_list() и distinct()

def cat(request):
    my_model = Model.objects.values_list('field_name').distinct()
    return render(...{'my_model': my_model})
0 голосов
/ 09 мая 2018

Если вам просто нужен выбор, вам не нужно запрашивать базу данных, просто передайте CAT выбор в контексте.

def cat(request):
    my_model = Model.objects.all()
    return render(...{'post': post, 'cats': Model.CAT})

и в вашем шаблоне просто зацикливайтесь на cats

{% for item in cats %}
    {{ item.0 }} {{ item.1 }}
{% endfor %}
0 голосов
/ 09 мая 2018

Вы можете использовать .distinct () в запросе, например:

Model.objects.all().distinct()

См .: https://docs.djangoproject.com/en/2.0/ref/models/querysets/#distinct

...