Невозможно получить URL из файла models.py для пункта меню - PullRequest
0 голосов
/ 15 марта 2020

Я создаю пункты меню для своей навигации, но я могу получить все из моделей, изображений БД (иконки), имени, но когда я хочу получить URL, ничего не происходит.

Мои представления для меню

def index(request):
Post_list = BlogPost.objects.all()[:5]
Slider_item = HomePageSlider.objects.all()
menu_item = Menu.objects.all()
template_name = 'front/index.html'
return render(request, template_name, {"Post_list":Post_list,
                                      "data_item":Slider_item,
                                      "menu_item":menu_item,
                                            })

Мой шаблон HTML

  {% for menu in menu_item %}
  <li class="mobile-menu-item">
    <a href="{{menu.0.Menu_url}}" class="mobile-menu-item-link">{{menu.Menu_name}}</a>
  </li>
  {% endfor %}

my models.py для Меню

from django.db import models


class Menu(models.Model):
    Menu_name = models.CharField(max_length=100,blank=True)
    Menu_slug = models.SlugField(name="სლაგი",blank=True)
    Menu_image = models.ImageField(upload_to="menuimages")
    Menu_url = models.CharField(name="url",max_length=100,blank=True,null=True)

    class Meta:
        verbose_name = "მენიუ"

    def __str__(self):
        return self.Menu_name

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Единственное изменение, которое вам нужно сделать, это в вашем шаблоне, вам не нужно делать menu.0, так как меню - это сам экземпляр

  {% for menu in menu_item %}
  <li class="mobile-menu-item">
    <a href="{{menu.Menu_url}}" class="mobile-menu-item-link">{{menu.Menu_name}}</a>
  </li>
  {% endfor %}
0 голосов
/ 15 марта 2020

в ваших моделях вы должны определить что-то, как показано ниже, чтобы вызвать его в шаблонах

def get_absolute_url(self):
    return reverse("your_detail_view", kwargs={"pk": self.pk})

и вызвать в шаблонах

{{menu.get_absolute_url}}

или напрямую вызвать url

{% url 'detail_view' pk=menu.pk %}
...