带有切换开关元件的Django脆皮形式

发布于 2025-02-07 01:52:40 字数 1485 浏览 1 评论 0原文

我正在使用脆皮形式和布局助手来生成我的输入形式。我想在表单中添加一个切换开关。

所需结果: “在这里输入图像描述”

我得到的: ”在此处输入图像描述“

forms.py:models.py:form.html

class RequestForm(forms.ModelForm):
on_prem = forms.CharField(widget=forms.CheckboxInput(attrs={"class": "slider form-control"}))

class Meta:
    model = Request
    fields = ['on_prem']

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.helper = FormHelper(self)
    self.helper.layout = Layout(
        Div(
            Div(Field('on_prem'), css_class='col-md-3', ),
            css_class='row',
        ),
    )

我在

class Request(models.Model):        
on_prem = models.BooleanField(default=False)

i.sstatic.net/dom1j.png

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {% crispy form %}
    <button type="submit" class="d-block btn mt-4 w-50 mx-auto">
        Save Request 
    </button>
</form>

中看到的。 com/doc/5.1/forms/checks radios/#switches“ rel =“ nofollow noreferrer”> bootstrap文档 nested css class Ins the Twoggle Switch效果我希望通过嵌套的CSS类实现,我不确定如何实现这一目标通过形式助手。任何帮助将不胜感激。

I am using Crispy Forms and layout helper to generate my Input form. I'd like to add a Toggle switch into the form.

desired result: enter image description here

what I get: enter image description here

forms.py:

class RequestForm(forms.ModelForm):
on_prem = forms.CharField(widget=forms.CheckboxInput(attrs={"class": "slider form-control"}))

class Meta:
    model = Request
    fields = ['on_prem']

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.helper = FormHelper(self)
    self.helper.layout = Layout(
        Div(
            Div(Field('on_prem'), css_class='col-md-3', ),
            css_class='row',
        ),
    )

models.py:

class Request(models.Model):        
on_prem = models.BooleanField(default=False)

form.html

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {% crispy form %}
    <button type="submit" class="d-block btn mt-4 w-50 mx-auto">
        Save Request 
    </button>
</form>

I have seen in the Bootstrap documentation that the toggle switch effect I desire is achieved with nested css classes and I am not sure how to achieve that via the form helper. Any help would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

方圜几里 2025-02-14 01:52:41

仅使用“字段”的代码行较少:

self.helper.layout = Layout(
    Field('notify_faculty_field', css_class="form-check-input", wrapper_class="form-check form-switch"),
)

Fewer lines of code just using "Field":

self.helper.layout = Layout(
    Field('notify_faculty_field', css_class="form-check-input", wrapper_class="form-check form-switch"),
)
旧梦荧光笔 2025-02-14 01:52:41

如果使用django-crispy-forms crispy-bootstrap5使用bootstrap5模板包,则可以使用switch> switch> switch输入类型:

from crispy_bootstrap5.bootstrap5 import Switch

... Layout(Switch("is_company"))

https://github.com/django-crispy-forms/crispy-bootstrap5?tab5?tab = readme-ov-file#whats-new

If using the Bootstrap5 template pack for django-crispy-forms crispy-bootstrap5 you can use the Switch input type:

from crispy_bootstrap5.bootstrap5 import Switch

... Layout(Switch("is_company"))

Reference: https://github.com/django-crispy-forms/crispy-bootstrap5?tab=readme-ov-file#whats-new

魂ガ小子 2025-02-14 01:52:41

我通过在助手中使用HTML块来实现这一目标。

form.py

class RequestForm(forms.ModelForm):
    on_prem = forms.CharField(widget=forms.CheckboxInput(attrs={"class": "slider form-control"}))

class Meta:
    model = Request
    fields = ['on_prem']

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.helper = FormHelper(self)
    self.helper.layout = Layout(
    Div(
        Div(
            HTML('<label class="form-check-label" for="on_prem">On Prem</label>'),
            HTML('<div class="form-switch">'),
            Field('on_prem'),
            HTML('</div>'),css_class='col-md-3',),
            css_class='row',
        ),
    )

I managed to achieve this by using HTML blocks in the helper.

enter image description here

form.py

class RequestForm(forms.ModelForm):
    on_prem = forms.CharField(widget=forms.CheckboxInput(attrs={"class": "slider form-control"}))

class Meta:
    model = Request
    fields = ['on_prem']

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.helper = FormHelper(self)
    self.helper.layout = Layout(
    Div(
        Div(
            HTML('<label class="form-check-label" for="on_prem">On Prem</label>'),
            HTML('<div class="form-switch">'),
            Field('on_prem'),
            HTML('</div>'),css_class='col-md-3',),
            css_class='row',
        ),
    )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文