如何在django中创建一个页面

时间:2009-08-25 10:01:51

标签: django django-admin django-templates

我有两个型号,

class A(models.Model):

   id = models.AutoField(primary_key=True)
   name = models.CharField(max_length=200)
   type = models.CHarFIeld(max_length=200)
   ..
   ..
   .. 

class B(models.Model):
  a= models.ForeignKey(A)
  state = models.CharField(max_length=200)

现在,当我看到A类页面时,我想要一个可以显示与b相关的所有数据的链接。

任何建议

2 个答案:

答案 0 :(得分:1)

当你创建一个关系时,你会在目标对象上自动拥有一个“set”成员,让你可以向后走这段关系(见django documentation)。

考虑到这一点,您可以在模板中使用以下内容:

{% for b in a.b_set %}
  <!-- display data related to b -->
{% endfor %}

答案 1 :(得分:1)

我不知道如何配置管理员为您提供此功能,但您可以非常轻松地为您的模型A extend the admin templates并自行提供模型B管理页面的链接。

根据说明,你会做类似我在下面描述的事情。

使用以下约定

创建'change_form.html'模板
[project]/
    templates/
        admin/
            [app name]/
                [model name]/
                    change_form.html

然后,您的change_form的内容,您可以扩展默认管理模板并根据您的需要进行自定义。例如,显示“b”对象列表,其中包含指向其管理页面的链接。

{% extends "admin/change_form.html" %}

{% block after_field_sets %}
<ul>
{% for b in a.b_set %}
    <li><a href="../../[model b]/{{ b.pk }}/">{{ b }}</a></li>
{% endfor %}
</ul>
{% endblock %}
相关问题