Шаблон Django не отображает атрибут базы данных CharField в определении {% url%} - PullRequest
0 голосов
/ 26 марта 2011

В моем шаблоне:

<a href="{% url x.content.url_internal_django_link  x.content.id %}"> 
  {{x.content.content}} </a>

x.content.url_django_link = "seek_detail" в БД
Когда я вручную ввожу имя URL в шаблоне, как это, это не показывает ошибки-

  <a href="{% url seek_detail  x.content.id %}"> 
      {{x.content.content}} </a>

Модель:

class SoukFeedContent(models.Model):
    content = models.CharField(max_length = 400)
    url_internal_django_link = models.CharField(max_length = 30, blank = True)
    link_id = models.IntegerField(null = True, blank = True) 

Ответы [ 2 ]

3 голосов
/ 26 марта 2011

{% url %} - это встроенный тег шаблона, который:

Возвращает абсолютное соответствие URL, данное просмотр с его параметрами.

Передавая x.content.url_internal_django_link, вы указываете ему искать представление с именем url_internal_django_link в приложении x, определенном в файле content.py. Это не ударяет БД для строкового значения.

Вы, вероятно, должны просто определить метод get_absolute_url в своей модели и иметь ссылку как

models.py:

class SoukFeedContent(models.Model):
    content = models.CharField(max_length = 400)
    link_id = models.IntegerField(null = True, blank = True) 

    @models.permalink
    def get_absolute_url(self):
        return ('seek_detail', [str(self.id)])

template: при условии, что x.content является экземпляром вашей модели SoukFeedContent

<a href="{{ x.content.get_absolute_url }}">
1 голос
/ 26 марта 2011

Взгляните на заметки о выпуске django 1.3 .

Это можно записать в django 1.3 следующим образом:

{% load url from future %}

<a href="{% url x.content.url_internal_django_link  x.content.id %}"> 
      {{x.content.content}} </a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...