Django:一个用于不同对象列表的模板

时间:2010-08-02 11:53:24

标签: django templates foreign-keys

我的模型基本上是由外键链接的对象链:

class Object1(object):
    object1_id = models.AutoField()
    object1_name = models.CharField()

class Object2(object):
    object2_id = models.AutoField()
    object2_name = models.CharField()
    object1 = models.ForeignKey(Object1)

class Object3(object):
    object3_id = models.AutoField()
    object3_name = models.CharField()
    object2 = models.ForeignKey(Object2)

我希望能够显示每个类的对象列表,每一行都是指向子对象列表的链接。如果给出了id,则列表应该只包含其父级具有给定id的对象。所以在我看来,我有这样的功能:

def object1(request):
    liste = Object1.objects.all()
    return render_to_response('list.html', {'list' : list, 'link' : link})                                                 

def object2(request, id):                                                              
    if id == 0:                                                                  
           list = Object2.objects.all() 
           link = "object3"                 
           render_to_response('list.html', {'list' : list, 'link' : link})

    else:                                                                            
            liste = Object2.objects.filter(object1 = id)                              
            return render_to_response('list.html', {'list':list, 'link':link})

问题是我不知道如何创建能够显示这些列表的单个模板

    {% for ele in list %}
            <li><a href="/{{link}}/{{ele.id}}/">{{ele.name}}</a></li>
    {% endfor %}

不起作用,因为对象的id和te名称在每种情况下都不同。 顺便说一句,如果有人想知道如何创建一个视图来完成这项工作,我们将不胜感激。 感谢

1 个答案:

答案 0 :(得分:1)

您是否有任何理由需要为不同模型中的相同属性设置不同的名称?这似乎没必要。事实上,我想知道为什么你需要不同的模型。

如果您确实需要这样做,我建议您为每个模型添加属性以获取其名称和ID值:

@property
def name(self):
    return self.object1_name

依此类推 - 现在您只需在模板中执行{{ ele.name }}