我有一个名为Job的模型类和一个称为Node的模型类。一个作业可以有多个源或目标类型的节点。
我有一个SourceNodeInlineModelForm和一个DestinationNodeInlineModelForm,它们都基于模型类Node。如果我在inline_models中使用其中一个,那么它们的工作效果与预期一致,但当我同时使用这两个时,只显示inline_mmodels中最后指定的一个。在下面,仅显示DestinationNodeInlineModelForm。
class Job(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(64))
class Node(db.Model):
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.String(16))
hostname = db.Column(db.Unicode(128))
port = db.Column(db.Integer)
job_id = db.Column(db.Integer, db.ForeignKey(Job.id))
job = db.relation(Job, backref='jobs')
class CustomInlineFieldListWidget(RenderTemplateWidget):
def __init__(self):
super(CustomInlineFieldListWidget, self).__init__('field_list.html')
class CustomInlineModelFormList(InlineModelFormList):
widget = CustomInlineFieldListWidget()
def display_row_controls(self, field):
return False
class CustomInlineModelConverter(InlineModelConverter):
inline_field_list_type = CustomInlineModelFormList
class SourceNodeInlineModelForm(InlineFormAdmin):
form_label = 'Source'
form_extra_fields = {
'type': HiddenField('type', default='source')
}
def __init__(self):
return super(SourceNodeInlineModelForm, self).__init__(Node)
class DestinationNodeInlineModelForm(InlineFormAdmin):
form_label = 'Destination'
form_extra_fields = {
'type': HiddenField('type', default='destination')
}
def __init__(self):
return super(DestinationNodeInlineModelForm, self).__init__(Node)
class JobAdmin(ModelView):
inline_model_form_converter = CustomInlineModelConverter
inline_models = (SourceNodeInlineModelForm(), DestinationNodeInlineModelForm())
def __init__(self):
super(JobAdmin, self).__init__(Job, db.session, name='Jobs')
只渲染inline_models中的最后一个条目。我希望两者都能呈现出来。