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

Django Admin中的动态字段

金谭三
2023-03-14
问题内容

我想要有关一个字段值的其他字段。为此,我构建了一个自定义管理表单以添加一些新字段。

与jacobian 1的博客文章相关,这是我想出的:

class ProductAdminForm(forms.ModelForm):
    class Meta:
        model = Product

    def __init__(self, *args, **kwargs):
        super(ProductAdminForm, self).__init__(*args, **kwargs)
        self.fields['foo'] = forms.IntegerField(label="foo")

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

但是其他字段“ foo”不会显示在管理员中。如果我像这样添加字段,则所有工作都很好,但没有按要求动态化,以添加有关模型的另一个字段的值的字段

class ProductAdminForm(forms.ModelForm):

    foo = forms.IntegerField(label="foo")

    class Meta:
        model = Product

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

那么,有没有我必须再次触发以使新字段起作用的初始化方法?还是有其他尝试?


问题答案:

这是解决问题的方法。感谢koniiiik,我尝试通过扩展* get_fieldsets *方法来解决此问题

class ProductAdmin(admin.ModelAdmin):
    def get_fieldsets(self, request, obj=None):
        fieldsets = super(ProductAdmin, self).get_fieldsets(request, obj)
        fieldsets[0][1]['fields'] += ['foo'] 
        return fieldsets

如果你使用多个字段集,请确保使用适当的索引将其添加到正确的字段集。



 类似资料:
  • 我正在编写一个APEX触发器来验证对象上的数据输入。我有许多字段遵循类似的命名格式,并且都是相同的数据类型: 我想在字段中循环,如果验证失败,则添加一个错误: 问题是Object.get(字段名称)不返回对字段本身的引用。它返回该字段中的值。我在这里找到了一个线程 https://developer.salesforce.com/forums/?id=906F000000091aFIAQ 这似乎试

  • 问题内容: 我正在尝试克服Rails中动态表单字段的障碍- 这似乎是框架无法很好地处理的。我也在我的项目中使用jQuery。我已经安装了jRails,但是我更愿意在可能的情况下毫不干扰地编写AJAX代码。 我的表单相当复杂,嵌套的两个或三个级别并不罕见。我遇到的问题是生成正确的表单ID,因为它们是如此依赖于表单构建器上下文。我需要能够动态添加新字段或删除关系中的现有记录,而我完全不知所措。 到目前

  • 问题内容: 好的,所以我正在研究Nodes中的一个项目,并且遇到了对象字面量键中的一个小问题,我有以下设置: 好的,你们中的很多人都会看这个,并认为它没问题,但是编译器不断告诉我,我缺少一个(冒号),但不是,好像or或the 都在影响编译器。 现在我相信(不确定),对象文字是在编译时创建的,而不是在运行时创建的,这意味着动态变量(例如和级联)将不可用 克服此类障碍而不必重写大量代码的最佳方法是什么

  • 问题内容: python有能力创建动态关键字吗? 例如: 我希望能够根据所选货币更改 usd 部分。 问题答案: 是的,它确实。使用在函数定义。 例: 但是你为什么需要那个呢?

  • 我目前正在使用一个将生成报告的API(使用JasperReports 6.12.2),在这种情况下,我必须在文本字段中打印一个大字符串,问题是我不能给这个元素赋予appiate行为来调整字符串大小的高度。 我以前一直在搜索询问,我找到的只是关于的属性,但对我不起作用,因为在我的版本中,这是不推荐的,而是用替换,所以基本上所有的结果都是一样的,文本被文本字段剪切。 注意:另外,我不得不说,这种动态的

  • 问题内容: 如何为欧姆对象动态设置字段? 问题答案: 中的class方法为命名属性定义访问器和更改器方法: 因此,当您说时,您可以免费获得以下方法: 您可以像这样调用mutator方法: 如果您真的想说,那么可以在课堂上添加以下内容: 您可能还希望访问器版本保持对称: