在这个例子中使用外键会帮助我吗?

时间:2014-09-17 01:15:52

标签: django django-views

我对如何从两个不同的表中提取相关信息感到困惑。 如果我转到localhost:8000 / user / username,它应该在下面显示用户个人资料和用户评论。因为用户名正在通过URL传递到views函数中。这是对的吗?

另外,是否需要使用外键来完成此操作?我已经阅读了文档,而且我还不完全确定外键如何帮助我实现目标。

模型

from django.db import models


class User(models.Model):
    name = models.CharField(max_length=20)
    reviewer = models.CharField(max_length=20)
    password = models.TextField()
    zipcode = models.Charfield(max_length=100)
    email = models.EmailField()

    def __str__(self):              # __unicode__ on Python 2
        return self.name

class UserReview(models.Model):
    name = models.ForeignKey(User)
    author = models.CharField(max_length=50)
    pub_date = models.DateField()
    stars = models.IntegerField(max_length=5)
    comment = models.CharField(max_length=100)

    def __str__(self):              # __unicode__ on Python 2
        return self.name

浏览

from django.shortcuts import render 

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

URLS

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

1 个答案:

答案 0 :(得分:0)

您需要做几件事。首先,您需要将参数传递给视图函数,然后您需要在模板中显示评级。

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

# randomtemplate.html
{{ username }}
{{ latest_reviews }}