如何自动超链接从查询集返回的项目

时间:2011-07-18 23:35:34

标签: django django-templates django-views

我有一个模特

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是创建事务的用户的名称(也称为createdby)。我已经实现了这个网址的视图。我只需要链接到它。

1 个答案:

答案 0 :(得分:2)

所以,大概你的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>

但是Geez,这都是Django 101