【问题标题】:how to make a page in django如何在 django 中创建一个页面
【发布时间】:2010-11-22 13:43:23
【问题描述】:

我有两个模型,

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 相关的所有数据的链接。

任何建议

【问题讨论】:

  • “页面”?您是指这些对象的管理界面中的页面吗?你真的应该更具体。
  • 我只想要一个管理界面中的页面。我可以使用内联显示它,但数据很大,然后保存需要时间

标签: django django-admin django-templates


【解决方案1】:

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

根据说明,您将执行类似于我在下面描述的操作。

使用以下约定创建一个“change_form.html”模板

[项目]/ 模板/ 行政/ [应用名称]/ [型号名称]/ 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 %}

【讨论】:

    【解决方案2】:

    当您创建关系时,您会在目标对象上自动拥有一个“set”成员,允许您向后遍历关系(请参阅django documentation)。

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 2019-09-05
      • 2021-12-17
      • 1970-01-01
      • 2013-11-02
      • 2012-02-12
      • 2019-12-28
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多