我想将相关对象显示给用户在我的django网站上签出的对象。就像推荐一样。例如,当用户点击拉斯维加斯州的某个对象时,我希望侧边栏显示拉斯维加斯的其他相关对象。
就像当用户点击名为“拉斯维加斯的家”的链接,当用户被重定向到显示家庭的页面时,并且在侧边栏上显示“拉斯维加斯的其他家园”希望你得到我的观点?我尝试了以下代码,但它不起作用。一整天都在与这场斗争,但没有成功。
模型
class Finhall(models.Model):
user=models.ForeignKey(User)
name=models.CharField(max_length=250, unique=True)
address=models.CharField(max_length=200)
city=models.CharField(max_length=200)
state=models.CharField(max_length=200, help_text='Las vegas')
def __unicode__(self):
return u'%s' % (self.name)
查看:
def homedetail(request,finhall_id,slug):
post=Finhall.objects.get(id=finhall_id,slug=slug) #show details of an object
stateme=Finhall.objects.get(state) #show similar objects based on state
booms=Finhall.objects.filter(state=stateme)
vips=booms.select_related()
for vip in vips:
print vip.id
return render_to_response('postdetail.html',{'post':post,'vips':vips,'Finhall':Finhall},context_instance=RequestContext(request))
答案 0 :(得分:1)
假设state
来自post
,您应该使用filter
代替get
并在模板中迭代stateme
,例如
def home(request, finhall_id, slug):
qs = Finhall.objects.all()
try:
finhall = qs.get(id=finhall_id, slug=slug)
except Finhall.DoesNotExist:
finhall = None
if finhall:
similar_finhalls = qs.filter(finhall.state)
else:
similar_finhalls = Finhall.objects.none()
# other stuff
return render_to_response('home.html', {
'finhall': finhall,
'similar_finhalls': similar_finhalls
},context_instance=RequestContext(request))