2017-11-08 6 views
3

Djangoに比較的新しいですが、この問題を検索しましたが解決策が見つかりませんでした。解決策が明白であれば私を許してください。しかし、私はそれを正しいものにすることはできません。Djangoテンプレートの外部キーオブジェクトでget_absolute_url()を使用する方法

これは問題です。私は2つのモデルを持っています教会員コミュニティ。 ParishionerはCommunityと多対1の関係を持っています。 parishioner_detailページで、community_detailページへのリンクとしてコミュニティ名を表示しようとしています。私はget_absolute_url()メソッドを正しく使用していないと感じています。どんな助けもありがとう。

モデル:

from django.db import models 
from django.core.urlresolvers import reverse 

class Community(models.Model): 
    name = models.CharField(max_length=41) 
    description = models.TextField() 
    leader = models.CharField(max_length=41) 
    email = models.EmailField() 
    phone_number = models.CharField(max_length=20) 
    slug = models.SlugField(max_length=31, unique=True) 

    def __str__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('people_community_detail', kwargs={'slug': self.slug}) 

class Parishioner(models.Model): 
    name = models.CharField(max_length=41) 
    date_of_birth = models.DateField('date of birth', blank=True) 
    email = models.EmailField() 
    phone_number = models.CharField(max_length=20) 
    start_date = models.DateField('date posted') 
    societies = models.ManyToManyField(Society, blank=True, related_name='parishoners') 
    communities = models.ForeignKey(Community, blank=True, related_name='parishoners') 
    sacraments = models.ManyToManyField(Sacrament, blank=True, related_name='parishoners') 
    slug = models.SlugField(max_length=31, unique=True) 

    def __str__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('people_parishioner_detail', kwargs={'slug': self.slug}) 

    class meta: 
     ordering = ['name'] 
     verbose_name_plural = "parishioners" 

再生回数:

from django.shortcuts import get_object_or_404, render, redirect 
from .models import Society, Community, Sacrament, Festival, Parishioner 

def community_list(request): 
    return render(request, 'people/community_list.html', {'community_list': Community.objects.all()}) 

def community_detail(request, slug): 
    community = get_object_or_404(Community, slug__iexact=slug) 
    return render(request, 'people/community_detail.html', {'community': community}) 

def parishioner_list(request): 
    return render(request, 'people/parishioner_list.html', {'parishioner_list': Parishioner.objects.all()}) 

def parishioner_detail(request, slug): 
    parishioner = get_object_or_404(Parishioner, slug__iexact=slug) 
    return render(request, 'people/parishioner_detail.html', {'parishioner': parishioner}) 

parishioner_detail.html:

<dt>Community</dt> 
    <dd><a href="{{ community.get_absolute_url }}">{{ parishioner.communities|title }}</a></dd> 
<dt>Societies</dt> 
    {% for society in parishioner.societies.all %} 
    <dd><a href="{{ society.get_absolute_url }}">{{ society.name|title }}</a></dd> 
    {% endfor %} 

parishioner_detailにsociety_detailページに正しく社会名リンクが、コミュニティ名のリンクコミュニティ_詳細ページの代わりに基本的にはページをリロードします。

ご協力いただければ幸いです。おかげさまで

答えて

3

communityあなたのコンテキストに名前が存在しないため、hrefリンクは空であり、同じページにリダイレクトされます。

おそらく、やるべきこと:それは外部キーフィールドなので、それはあまり混乱だから(すなわちcommunity)単数形にcommunitiesフィールドを変更することが

<dt>Community</dt> 
<dd><a href="{{ parishioner.communities.get_absolute_url }}">{{ parishioner.communities|title }}</a></dd> 

良いです。 1つのコミュニティ(複数のコミュニティではない)に1人の教会員。

+0

Mosesさん、ありがとうございます、それは魅力的でした。コミュニティをコミュニティに変更しました。 –

関連する問題