我对如何从两个不同的表中提取相关信息感到困惑。 如果我转到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)
urlpatterns = patterns('',
url(r'^user/(?P<username>\w+)/', 'index'),
)
答案 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 }}