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

Django Admin-覆盖自定义表单字段的小部件

高经艺
2023-03-14
问题内容

我有一个自定义TagField表单字段。

class TagField(forms.CharField):
    def __init__(self, *args, **kwargs):
        super(TagField, self).__init__(*args, **kwargs)
        self.widget = forms.TextInput(attrs={'class':'tag_field'})

如上所示,它使用TextInput表单字段小部件。但是在管理员中,我希望使用Textarea小部件来显示它。为此,存在formfield_overrides钩子,但在这种情况下不起作用。

管理员声明为:

class ProductAdmin(admin.ModelAdmin):
    ...
    formfield_overrides = {
        TagField: {'widget': admin.widgets.AdminTextareaWidget},
    }

这对表单字段窗口小部件没有影响,并且tags仍使用TextInput小部件呈现。


问题答案:

django管理员对其许多字段使用自定义窗口小部件。覆盖字段的方法是创建一个供ModelAdmin对象使用的Form。

# forms.py

from django import forms
from django.contrib import admin

class ProductAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ProductAdminForm, self).__init__(*args, **kwargs)
        self.fields['tags'].widget = admin.widgets.AdminTextareaWidget()

然后,在ModelAdmin对象中,指定以下形式:

from django.contrib import admin
from models import Product
from forms import ProductAdminForm

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

您还可以在此时覆盖queryset:例如,根据模型中的另一个字段过滤对象(因为limit_choices_to无法处理)



 类似资料:
  • 问题内容: 我建立了一个Django表单,该表单提交到另一个域(我不控制)上的页面。我的想法是,我有一个样式优美,生成得很好的表单,可以很好地适合我自己的网站,并且在提交用户时将用户带到其他地方。 然而, 如果其他表单更改了其任何字段的名称,则我需要更改表单中的字段名称,然后在应用程序中的其他位置更改这些名称-因为attr与用于该属性的属性的名称相关联领域。 如果远程表单使用愚​​蠢的名称,那么我

  • 问题内容: 我想要的只是让bool(myInstance)返回False(以及在if / or / and等条件下让myInstance评估为False。我知道如何覆盖>,<,=) 我已经试过了: 有什么建议? (我正在使用Python 2.6) 问题答案: 这是Python 2.x还是Python 3.x?对于Python 2.x,您正在寻找替代方法。

  • 问题内容: 我知道如何在Jackson中使用自定义序列化程序(通过扩展),但是我希望默认序列化程序可用于除1个字段之外的所有字段,我想使用自定义序列化程序覆盖该字段。 注释不是一种选择,因为我正在序列化一个生成的类(来自Thrift)。 编写自定义杰克逊序列化程序时,如何仅指定要覆盖的某些字段? 更新: 这是我要序列化的类: 上面的类有很多特质,其中大多数使用本机类型。我只想覆盖自定义序列化程序中

  • 我是WordPress的新手,我们有一个表格,人们可以填写该表格以将帖子提交到我们的网站上。 我们使用高级自定义字段插件来填写我们需要的所有必要信息。我们有一个领域是故事描述。 我想让story_description使用所有摘录过滤器(长度等),并将其保存在wp_posts表中的post_EXCEPT下。 我该如何将自定义长度保存在表中,而另一个保存在定义的摘录中?我对所有的过滤器和动作都不熟悉

  • 在苹果自带地图和百度地图上覆盖一层图片,图片可以随地图缩放移动。关键就是自定义Overlay和OverlayView。 作者说:实在无力吐槽了,百度地图iOS SDK中的静态库文件居然都是10M !由于过大上传不了,亲们自行去 http://developer.baidu.com/map/sdk-ios.htm 按提示添加SDK吧!至于基于百度地图的自定义Overlay和OverlayView 记

  • 我在印度使用进行在线支付, 我想要一个像账单地址这样的自定义字段应该存储在razorpay帐户和结帐表中。我知道,它将自定义数据存储到razorpay帐户,但我没有得到任何链接来设置结帐表单中的这些字段。 我的代码: 所以,我的问题是,如何在razorpay结账表单中获取所有字段?