小编Fea*_*nor的帖子

如何将额外的参数传递给Django管理员自定义表单?

如您所知,我们可以定义ModelForm,然后通过在modelAdmin类中设置form属性来替换添加和更改表单。例如:

class FooAdminForm(django.forms.ModelForm):
     class Meta:
         model = Foo

     def __init__(self, *args, **kwargs):
         super(FooAdminForm, self).__init__(self, *args, **kwargs)


class FooAdmin(admin.ModelAdmin):
    form = FooAdminForm
Run Code Online (Sandbox Code Playgroud)

在一个简单的视图中,我们可以初始化一个表单对象,并将额外的参数传递给表单的init函数。像这样的东西:

def my_view(request):
    form = FooAdminForm(p1='aaa', p2='bbb')
Run Code Online (Sandbox Code Playgroud)

然后在init函数中,我们可以访问这些参数。

self.p1 = kwargs.pop('p1')
self.p2 = kwargs.pop('p2')
Run Code Online (Sandbox Code Playgroud)

但是如何将参数传递给modelAdmin表单?我只能将表单类传递给modelAdmin表单属性,而不能像在视图中那样将其初始化。

我在这里找到了关于stackoverflow的解决方案:

在Django Admin中使用带有自定义__init__的表单

但是它向表单对象添加了动态属性,我认为这有点怪异。是否有更好的或正式的方法来执行此操作?

django django-admin

5
推荐指数
1
解决办法
1190
查看次数

wagtail 页面 vs 使用 django 视图和 url

我应该何时何地使用 wagtail 页面,何时应该使用 django 编写自定义 url 和视图?例如,我应该为用户配置文件创建页面,还是应该为配置文件添加 urlpattern 并在 Django 视图中编写配置文件逻辑?

django wagtail

4
推荐指数
1
解决办法
1145
查看次数

有没有一种方法只能在函数创建时定义字典?

我想在函数内定义一个字典。我如何一次只能在函数创建时定义该词典。我试图防止在每个函数调用上创建字典。目前,我定义了一个全局字典并在函数内部使用它,但是还有其他解决方案吗?

media_types = {
    1: 'New Video',
    2: 'New Image',
    3: 'New File',
}

def get_media_type(t):
    return media_types.get(t, None)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
74
查看次数

标签 统计

django ×2

django-admin ×1

python ×1

python-3.x ×1

wagtail ×1