как вызывать методы модели в шаблоне - PullRequest
0 голосов
/ 24 января 2019

как вызвать метод модели get_url () в шаблоне я хочу вызвать метод модели get_url () в теге в шаблоне

models.py

class Department(Base):

  department_name = models.CharField(max_length=128)
  description = models.TextField(null=True, blank=True)

  def get_url(self):
      ct = ContentType.objects.get(model='department')
      url_name = ' %s:%s ' % (ct.app_label, ct.model)
      return reverse(url_name, args=(self.object_id))

шаблон.html

    <a href="{% ? ... how to call the model method here.... ? %}"></a>

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Я думаю, вы можете сделать это так:

class Department(Base):

  department_name = models.CharField(max_length=128)
  description = models.TextField(null=True, blank=True)

  def get_url(self):
      ct = ContentType.objects.get(model='department')
      url_name = ' %s:%s ' % (ct.app_label, ct.model)
      return reverse(url_name, args=(self.pk))  # <-- Changed to self.pk to access primary key of the object

Тогда вы можете использовать его в шаблоне так:

 <a href="{{ object.get_url }}"></a>

Обновление

Для доступа к экземпляру модели в шаблоне вам необходимо отправить его в Шаблон через контекст. В представлении на основе функций вы можете попробовать так:

from django.shortcuts import render


def some_view(request):
   department = Department.objects.first()
   context = { 'object': department }  # Here you can use any key in dictionary, I am using object. This key is accessible in template
   return render(request, 'your_template.html', context)
0 голосов
/ 24 января 2019

Передача экземпляра модели в tempalte через контекст

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['instance'] = Department.objects.get(id=1)
    return context

<a href="{{ instance.get_url }}"></a>
...