如何在Django中链接两个不同的模型

时间:2014-09-16 21:44:09

标签: django django-models

我是学习Django的新手,我正在开发一个页面,该页面只显示为该用户编写的用户个人资料和评论(两者都在不同的模型中)。

我有点不确定的部分是如何链接不同的表或模型。我想要做的是非常基本的。几乎只要您点击用户的名称,它就会转到一个配置文件页面,该页面还会在底部显示所有用户评论。我想知道我是否可以使用变量代替'name = ben'并将其更改为'name = user_you_clicked_on'。

希望我所要求的是有道理的,也许我可以指出正确的方向。我被告知尝试使用外键,但我不确定这是我想要做的。

from django.shortcuts import render 

def index(request):
    profile_info = User.objects.filter(name=‘ben’)
    context = {‘profile_info’: profile_info}    
    latest_reviews = UserReview.objects.filter(name=‘ben').order_by('-pub_date')[:5]
    context = {‘profile_info’: profile_info, 'latest_reviews': latest_reviews}
    return render(request, 'randomtemplate.html', context)

2 个答案:

答案 0 :(得分:0)

你可以pass username in the URL(ID会更好,但不要过于复杂):

urlpatterns = patterns('',
    url(r'^user/(?P<username>\w+)/', 'index'),
)

然后你的观点看起来像这样:

def index(request, username):
    profile_info = User.objects.filter(name=username)

答案 1 :(得分:0)

如果您仍想“连接”两个表格。在models.py中,我会写:

   from django import models

   class User(models.Modle):
      name = models.CharField(max_length=30)
      #add more fields here

   class UserReview(models.Model):
      user_id = models.ForeignKey(User)
      #add more fields here

这将在您的数据库(User和UserReview)中创建两个表,其中Userreview通过外键(一个用户(id) - >多个评论(user_id1; user_id1; user_id2等))连接到User。默认情况下,此外键是User表的自动生成的id字段(默认情况下,id字段,在本示例中也是主键,是为每个表自动生成的,除非另有说明)。

我希望它有所帮助