我有一个继承自ModelAdmin的管理类:
var zmq = require('zmq');
var sub_socket = zmq.socket('sub');
sub_socket.connect('tcp://127.0.0.1:10001');
sub_socket.subscribe('TEST_MESSAGES')
sub_socket.on("message",function(msg){
console.log(msg);
});
我想将参数传递给class TemplateAdmin (admin.ModelAdmin):
inlines = (TemplateAttributeInline, CompanyAttributeInline)
list_display = ("name", "created", "updated","departments")
list_filter = ['companies__company']
list_editable = ("departments",)
search_fields = ("name", "companies__company",)
exclude = ("companies",)
save_as = True
,然后将参数传递给TemplateAttributeInline
。这样做的最佳方式是什么?
TemplateAttributeInline:
TemplateAttributeForm
TemplateAttributeForm
class TemplateAttributeInline (admin.TabularInline):
model = TemplateAttribute
extra = 0
sortable_field_name = "display"
form = TemplateAttributeForm
答案 0 :(得分:3)
您可以创建一个返回表单类的函数:
def TemplateAttributeForm(param):
class MyTemplateAttributeForm(forms.ModelForm):
class Meta:
model = Template
def __init__(self,*args, **kwargs):
super(TemplateAttributeForm, self).__init__(*args, **kwargs)
#do what ever you want with param
return MyTemplateAttributeForm
在另一个功能中使用它来定义TemplateAttributeInline
def TemplateAttributeInline(param):
class MyTemplateAttributeInline (admin.TabularInline):
model = TemplateAttribute
extra = 0
sortable_field_name = "display"
form = TemplateAttributeForm(param)
return MyTemplateAttributeInline
要完成,请在TemplateAdmin
定义中使用此功能:
class TemplateAdmin (admin.ModelAdmin):
inlines = (TemplateAttributeInline(param), CompanyAttributeInline)
....
答案 1 :(得分:0)
为了补充Sylvain Biehler的响应,我添加了以下代码以使内联表单具有动态性。这是django doc上的参考。在首次“加载”,“保存”之后和“重新加载”时调用方法“ get_inline_instances”。在“添加”事件中,不会传递任何内容。
在这里,“ obj”是管理表单当前绑定到的模型实例。对于未绑定(添加新)表格,它为“无”。除了直接传递模型实例“ obj”外,您还可以传递其任何属性,例如obj.id。在这种情况下,您需要首先检查实例是否不是None。
connected-react-router