【问题标题】:crispy form tab has twice the same name酥脆的表单选项卡有两个相同的名称
【发布时间】:2021-09-20 09:01:47
【问题描述】:
我目前正在使用三种型号:
- 带有指向 Briefe 的外键的 SubBriefe
- SubBriefe 与 SubBriefeField 具有多对多关系,这允许每个 SubBriefe 指向 Subriefefields
问题是,当我使用布局助手来呈现我在 SubBriefeFields 的选项卡内的 SubBriefe 选项卡时,问题是如果 SubBriefeField 选项卡“示例”在两个 Subbriefe 中,则激活选项卡的 ID 没有工作两次,
你知道使我的布局助手中每个选项卡的 css.id 唯一的函数吗,因为我认为它已经存在于手风琴组中。
【问题讨论】:
标签:
python
css
django
forms
django-crispy-forms
【解决方案1】:
我在 Lib\site-packages\crispy_forms\bootstrap.py 中找到了答案,并将两个方法直接复制并粘贴到 forms.py 中的 Tab 类和 Container 类,您将分别重命名为 Tabed 和 Containered在容器初始化方法中,如果不是 self.css.id ... by
self.css.id = f"{self.name}{kwargs['roller']}" 并在您的新 taber 中添加参数roller
Taber(name ,Row('', *FieldSet(lister), css_class='col-12'),roller=roller)
诀窍已经完成,您将在选项卡中拥有可以具有相同名称的选项卡,除了我们在选项卡的 css.id 末尾附加一个参数以防重复,
当然,我在 css.id 末尾使用主选项卡的指针,这样当我在第一个选项卡中时,子选项卡以 0 结尾,第二个选项卡 -> 子选项卡以 1 结尾...。