是否可以使用 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) 我正在尝试在模板中的选择字段中显示模型字段。我正在使用在选择字段中选择的外键。问题是只显示对象 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)