2017-04-23 28 views
0

マイモデル:スラグジャンゴで外部キーを使用するにはどうすればよい

class Faculty(models.Model): 
    name = models.CharField(max_length=30) 


class Program(models.Model): 
    name = models.CharField(max_length=30) 
    faculty = models.ForeignKey(Faculty) 


class Student(models.Model): 
    name = models.CharField(max_length=30) 
    slug = models.SlugField(max_length=30, unique=True) 
    faculty = models.ForeignKey(Faculty) 
    program = models.ForeignKey(Program) 

私の見解

def profile(request, slug, faculty, program): 
    template_name = 'profile.html' 
    infor = get_object_or_404(Candidate, slug=slug, faculty=faculty, program=program) 
    context = {'title': infor.name} 
    return render(request,template_name,context) 

のURL

url(r'^(?P<faculty>[\w-]+)/(?P<program>[\w-]+)/(?P<slug>[\w-]+)/$', profile, name='profile'), 

私がホストにプロファイルを持っ/ 1/1/sagar-devkota /私が必要とするものはhost/science/be/sagar-devkota /科学は教員であり、プログラムであると仮定しよう。

答えて

1

教員とプログラムモデルの両方にスラッグフィールドを与えます。フィルタでは、関連する参照のために__を使用します。

infor = get_object_or_404(Candidate, slug=slug, faculty__slug=faculty, program__slug=program) 

これはnameフィールドでも使用できます。

infor = get_object_or_404(Candidate, slug=slug, faculty__name=faculty, program__name=program) 
関連する問題