不显示相关对象

2024-05-03 20:08:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想显示与用户在我的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))

Tags: 对象用户nameidobjectsmodelsdefpost
1条回答
网友
1楼 · 发布于 2024-05-03 20:08:10

假设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))

相关问题 更多 >