2011-07-18 4 views
1

自動的にクエリセットから返された私は、私はitem.senderが自動的私はアイテムが

にハイパーリンクするのが好きdはモデル

私は

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

を使用して表示

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) 

を持ってどのようにハイパーリンクします

http://example.com/johnsmith/trans/ここで、johnsmithはトランザクションを作成するユーザーの名前です(別名createdby)。私はすでにこのURLのビューを実装しました。私はちょうどそれにリンクする必要があります。

答えて

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> 

しかしもぉ、これはすべてのDjango 101です。

+0

ハイパーリンクのテキストコンポーネントに任意のものを置くことができます。リンクジェネレータ自体については、名前がアカウントの一意の識別子である限り、はい。そうでなければ、 "get()のために返された複数の行"に関するかなり標準的なエラーが発生します。 –

関連する問題