小编fbz*_*zyx的帖子

如何使用脆皮形式格式化 django-filters?

是否可以使用 django-crispy-forms 格式化 django_filters 过滤器表单?我一直在尝试这样做,但django_filters.FilterSet似乎不接受脆脆的表单格式(来自 DeviceFilter 类)。它也不会给出错误。似乎唯一能够给出格式的是{{ filter.form|crispy }},但我希望能够在 python 中使用FormHelper().

过滤器.py

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Submit, Row, Column
import django_filters

class DeviceFilter(django_filters.FilterSet):

    device_type = django_filters.ModelChoiceFilter(lookup_expr='exact', field_name='device_type__pk',
                                                   queryset=None)
    device_group = django_filters.ModelChoiceFilter(lookup_expr='exact, field_name='device_group__pk',
                                                   queryset=None)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.filters['device_type'].queryset = DeviceType.objects.filter(owner=self.request.user)
        self.filters['device_group'].queryset = DeviceGroup.objects.filter(owner=self.request.user)
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Row(
                Column('device_type', css_class='form-group col-md-6 mb-0'),
                Column('device_group', css_class='form-group col-md-4 mb-0'),
                css_class='form-row'
            ),
            Submit('submit', 'filter')
        )

    class Meta:
        model = Device …
Run Code Online (Sandbox Code Playgroud)

django django-filter django-crispy-forms

5
推荐指数
1
解决办法
1706
查看次数

Django ModelForm显示外键的模型字段而不是对象id

我正在尝试在模板中的选择字段中显示模型字段。我正在使用在选择字段中选择的外键。问题是只显示对象 ID。

我怎样才能让它显示我的外键的模型字段(例如证书模型中的“crt_id”)而不是对象和ID?(见图)

在此输入图像描述

先感谢您

我的代码:

证书型号

class Certificate(models.Model):
    crt_id = models.CharField(max_length=60)
    crt_expire = models.DateTimeField()
    crt_active = models.BooleanField(default=False)

Run Code Online (Sandbox Code Playgroud)

设备型号

class Device(models.Model):
    device_name = models.CharField(max_length=64)
    device_group = models.CharField(max_length=64)
    device_certificate = models.ForeignKey(Certificate, models.SET_NULL, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

表格.py

class DeviceForm(forms.ModelForm):

    device_group = forms.CharField(required=False)
    device_name = forms.CharField(required=True)

    class Meta:
        model = Device
        fields = [
            'device_name',
            'device_group',
            'device_certificate'
        ]
Run Code Online (Sandbox Code Playgroud)

python django django-models django-forms

2
推荐指数
1
解决办法
2351
查看次数