相关对象未显示

时间:2013-04-20 12:45:48

标签: python django

我想将相关对象显示给用户在我的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))

1 个答案:

答案 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))