当前位置: 首页 > 面试题库 >

Django InlineModelAdmin:部分显示内联模型并链接到完整模型

李宁
2023-03-14
问题内容

我定义了几种模型:日志,卷,volume_scanInfo等。

日记可以具有更多的卷,而一个卷可以具有更多的scanInfo。

我想做的是:

  • 在日记的管理页面中,我要内联(完成)卷的列表
  • 将上一个列表的每个卷连接到其管理页面,在这里我可以显示表单以编辑该卷及其内联的“扫描信息”列表。
    所以我想要这样的东西:
Journal #1 admin page
[name]
[publisher]
[url]
.....
list of volumes inline
    [volume 10] [..(other fields)..]   <a href="/link/to/volume/10">Full record</a>
    [volume 20] [..(other fields)..]   <a href="/link/to/volume/20">Full record</a>

然后

Volume #20 admin page
[volume number]
[..(other fields)...]
......
list of the scan info inline
    [scan info 33] [..(other fields)..]   <a href="/link/to/scaninfo/33">Full record</a>
    [scan info 44] [..(other fields)..]   <a href="/link/to/scaninfo/44">Full record</a>

我试图做的是定义一个模型方法来创建代码,并尝试在管理中定义“ volume inline”的类中使用它,但是它不起作用。

换一种说法

模型“ Volume”的内部类似:

def selflink(self):
    return '<a href="/admin/journaldb/volume/%s/">Full record</a>' % self.vid
selflink.allow_tags = True

class VolumeInline(admin.TabularInline):
    fields = ['volumenumber', 'selflink']
    model = Volume
    extra = 1

但这会产生以下错误:

Exception Value: 'VolumeInline.fields' refers to field 'selflink' that is missing from the form.

任何想法?


问题答案:

最后,我找到了一个简单的解决方案。

我创建了一个称为linked.html的副本的新模板,tabular.html并添加了此代码以创建链接。

{% if inline_admin_form.original.pk %}
          <td class="{{ field.field.name }}">
              <a href="/admin/{{ app_label }}/{{ inline_admin_formset.opts.admin_model_path }}/{{ inline_admin_form.original.pk }}/">Full record</a>
          </td>
{% endif %}

然后我创建了一个LinkedInline继承新模型InlineModelAdmin

#override of the InlineModelAdmin to support the link in the tabular inline
class LinkedInline(admin.options.InlineModelAdmin):
    template = "admin/linked.html"
    admin_model_path = None

    def __init__(self, *args):
        super(LinkedInline, self).__init__(*args)
        if self.admin_model_path is None:
            self.admin_model_path = self.model.__name__.lower()

然后,当我定义一个新的内联时,我只需要使用my LinkedInline而不是normal即可InlineModelAdmin。



 类似资料:
  • 问题内容: 我想了解当CSS是CSS元素的DOM子元素(因此block元素是inline元素的子元素)时会发生什么情况。 CSS 2.1规范的“ 匿名块框”部分描述了这种情况:该示例包括以下规则… …以及随附的文字说… BODY元素包含一个匿名文本块(C1),然后是一个块级元素,然后是另一个匿名文本块(C2)。结果框将是围绕BODY的匿名阻止框,其中包含C1周围的匿名阻止框,P阻止框和C2周围包含

  • 我需要在小设备上的模态/全屏面板中显示某些内容,由按钮触发。在大型设备上,相同的内容总是显示出来,然后触发器被隐藏起来。 您如何处理这一问题以实现可访问性? 当前,我有此设置 最初,通过CSS隐藏在小型设备上(在以小型设备为目标的媒体查询中)。当触发器命中时,我将设置为true,并向面板本身添加一个类,它通过CSS显示全屏。在大型设备上,我隐藏该按钮,并始终通过CSS(在针对大型设备的媒体查询中)

  • 让我们通过例子来学习。 在本教程中,我们将引导您创建一个基本的投票应用。 它将包含两部分: 一个公共网站,可让人们查看投票的结果和让他们进行投票。 一个管理网站,可让你添加、修改和删除投票项目。 我们假设你已经 安装了 Django 。你可以运行以下命令来验证是否已经安装了 Django 和运行着的版本号: python -c "import django; print(django.get_ve

  • 英文原文:http://emberjs.com/guides/getting-started/displaying-a-models-completeness/ TodoMVC通过在<li>元素上应用了一个名为completed的CSS类来标识已完成的待办事项。因此需要在一个待办事项的isCompleted属性为真的时候,更新index.html,为这个待办事项的元素添加一个CSS类: handl

  • 本文向大家介绍jsp分页显示完整实例,包括了jsp分页显示完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jsp分页显示的实现方法。分享给大家供大家参考。 具体实现方法如下: 希望本文所述对大家的jsp程序设计有所帮助。

  • 通过预先确定好模型之间的关系,在业务开发中,使用非常简便的写法,就可以实现复杂的涉及多表数据增删改查。 这一切都是模型底层实现帮你在处理,在 imi 中,模型的关联关系都使用注解来定义。 注解 这里列出定义模型关联关系所需的注解,所有关联模型的注解,命名空间为Imi\Model\Annotation\Relation @OneToOne 一对一关系声明 用法: @OneToOne("模型类名")