gpt4 book ai didi

django - Wagtail ModelAdmin > 如何为 InlinePanel 设置初始数据?

转载 作者:行者123 更新时间:2023-12-01 15:14:06 25 4
gpt4 key购买 nike

我已经创建了一个Planning 和一个Meeting 模型。我使用 Wagtail 的 ModelAdmin 来管理它们。 Planning 有一个 planning_panels,它是一个 InlinePanel

对于其他模型,我可以使用表单的 __init__ 方法设置初始数据。
但是我不知道如何为 InlinePanel 使用的 formsets 实现它。有人有什么想法吗?这是代码:

class Planning(ClusterableModel):

base_form_class = PlanningForm

planning_panels = [
InlinePanel(
'planning_meetings',
min_num = 2,
max_num = 8,
label = 'meetings'
)
)
edit_handler = TabbedInterface([
ObjectList(planning_panels, heading=_('meetings')),
])


class PlanningMeeting(models.Model):

planning = ParentalKey(
'cms.Planning',
related_name='planning_meetings',
)
start = models.DateTimeField(
'start'
)
finish = models.DateTimeField(
'finish'
)
panels = [
FieldPanel('start'),
FieldPanel('finish')
]

class Meta:
verbose_name = 'Planned meeting'


class PlanningForm(WagtailAdminModelForm):

class Meta:
fields = '__all__'

def __init__(self, *args, **kwargs):
instance = kwargs.get('instance')
if not instance or not instance.pk:
initial = kwargs.get('initial', {})
initial.update({
'some_fiel': 'some_value'
})
kwargs['initial'] = initial
super().__init__(*args, **kwargs)


class CreatePlanningView(CreateView):

pass


class PlanningAdmin(ModelAdmin):
model = Planning
create_view_class = CreatePlanningView

最佳答案

wagtail 的 InlinePanel 使用了 django-modelcluster 包。考虑到这一点,您可以通过覆盖 CreateView 中的 get_instance 方法将初始数据添加到 wagtail create model admin 中,然后添加 planning_meetings 列表。

代码如下:

class CreatePlanningView(CreateView):
def get_instance(self):
instance = super().get_instance()

# add the initial inline panels here
instance.planning_meetings = [
PlanningMeeting(start=start, end=end),
PlanningMeeting(start=start, end=end)
# ... add more initial datas
]

# dont forget to return the instance
return instance

提示来自 django-modelcluster 文档 https://github.com/wagtail/django-modelcluster

关于django - Wagtail ModelAdmin > 如何为 InlinePanel 设置初始数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com