python Django添加硬编码的href链接到管理模型的表单视图页面

piah890a  于 2023-03-11  发布在  Python
关注(0)|答案(2)|浏览(180)

在Django的管理面板中,我如何添加硬编码链接到Django模型的表单页面(/add/ page)。这些链接指向永远不会改变的文档。我希望这些链接每次出现在表单上,作为用户确定输入字段的值的参考。
我需要:自定义字段?内置字段已经?修改管理员模板不知何故?添加一个帮助功能的地方?
我指的不是“更改列表”视图;当您在模型中添加或编辑对象时,我指的是/change//add/页面视图。

models.py

class DateRange(models.Model):

    date_name = models.CharField(max_length=100)
    adwords_name = models.CharField(max_length=100)
    bingads_name = models.CharField(max_length=100)

    def __str__(self):
        return self.date_name

forms.py

class DateRangeAdminForm(forms.ModelForm):
    class Meta:
        model = DateRange
        fields = '__all__'

admin.py

@admin.register(DateRange)
class DateRangeAdmin(admin.ModelAdmin):
    form = DateRangeAdminForm
    list_display = ['date_name', 'adwords_name', 'bingads_name']
ilmyapht

ilmyapht1#

扩展change_form.html可能会起作用--它将在顶部添加链接。
在您的命名空间模板目录(此处称为“templates-dir”)中创建此文件
templates-dir/admin/myapp/daterange/change_form.html

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

{% block object-tools %}
    {{ block.super }}
    <ul>
        <li>
            <a href="https://link1.com">Adwords documentation</a>
        </li>
        <li>
            <a href="https://link2.com">Bing ads documentation</a>
        </li>
    </ul>
{% endblock object-tools %}

相关文件:
https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#overriding-admin-templates
https://docs.djangoproject.com/en/2.0/howto/overriding-templates/#overriding-from-an-app-s-template-directory

w6mmgewl

w6mmgewl2#

如果我们坚持使用op中的屏幕截图,可以做以下操作:

class AdminExample(admin.ModelAdmin):
  readonly_fields = ('show_url',)
  fields = (......, "show_url",)

  def show_url(self, instance):
    url = reverse('help_link')
    response = format_html('<a href="{0}">{1}</a>', url, 'help_link')
    return response

然后,不要忘记添加urls.py和views.py以使链接工作。
结果如下:

相关问题