Как сделать гиперссылку на элемент, возвращенный из набора запросов автоматически - PullRequest
1 голос
/ 19 июля 2011

У меня есть модель

class Transaction(models.Model):
    sender = models.ForeignKey(MyBankAccount, unique=False, related_name="transactions_sent") 
    receiver = models.ForeignKey(RecipientBankAccount, unique=False, related_name="transactions_received")
    created = models.DateField('transfer request date')
    amount = models.FloatField()
    createdby=models.ForeignKey(User,null=True)

, которую я отображаю с помощью

<li>{{ item.sender }} {{ item.receiver }} {{ item.amount }}</li>

Мне бы хотелось, чтобы item.sender автоматически ссылался на

http://example.com/johnsmith/trans/ где johnsmith - имя пользователя, который создает транзакцию (он же создается).Я уже реализовал вид этого URL.Мне просто нужно дать ссылку на него.

1 Ответ

2 голосов
/ 19 июля 2011

Итак, по-видимому, ваш url.py выглядит примерно так:

urlpatterns = patterns(
    '',
    # Patterns:

    url(r'^(?P<username>[\w-]+)/(?P<createdby>[\w-]+)/$', transaction, name="transaction"),
    ....

Ваше мнение:

 def transaction(request, username, createdby):
     ...

Тогда ваш фрагмент шаблона:

 <a href="{% url transaction item.sender item.receiver %}">{{ item.sender }}</a>

Или вы можете определить следующее в вашем Transaction классе (файл urls.py должен остаться):

 def get_absolute_url(self):
     from django.core.urlresolvers import reverse
     return reverse('transaction', kwargs={'username': self.sender, 'createdby': self.receiver})

И тогда ваш шаблон будет выглядеть так:

 <a href="{{ item.get_absolute_url }}">{{ item.sender }}</a>

НоБоже, это все Джанго 101 .

...