tec*_*mix 4 django jquery jquery-select2 django-crispy-forms django-autocomplete-light
我正在使用 django-autocomplete-light
在模型的表单中,我想在其中一个字段上使用自动完成功能。该字段不是外键或其他东西,而只是一个整数字段,对于自动完成,我实际上希望使用与我正在填写的表单相同的模型。
然而,从自动完成设置的查询返回 ID,我想填充字段“projektnummer”。
有什么线索可以设置自动完成功能,使其不返回模型的主键,而是返回其他一些字段?
当我在整数字段上使用自动完成小部件时,似乎我从脆表单中得到了有线故障。
模型.py
class KombiPublikation(models.Model):
typid = models.ForeignKey('KombiPublikationsTypMedium', verbose_name='Outputtyp', db_column='typid') # publikationstyp.id or publikationstypinfo.typid
[...]
projektnummer = models.IntegerField(verbose_name='Projektnr.', default=0, blank=True)
[...]
Run Code Online (Sandbox Code Playgroud)
视图.py
class SearchProjectinFormAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = KombiPublikation.objects.filter(typid__in=[222, 223, 224]).filter(zeigen=1)
if self.q:
qs = qs.filter(Q(projektnummer__contains=self.q))
return qs
Run Code Online (Sandbox Code Playgroud)
表格.py
class KombiPublikationForm(forms.ModelForm):
class Meta:
model = KombiPublikation
#fields = []
exclude = ['pub_sprache']
widgets = {
'typid': autocomplete.ModelSelect2(url='output:typ-autocomplete', forward=['typtyp']),
'projektnummer': autocomplete.ModelSelect2(url='output:projekt-form-autocomplete'),
}
Run Code Online (Sandbox Code Playgroud)
我找到了答案。
您实际上必须从基础 autocomplete.Select2QuerySetView 覆盖 get_result_value 以从结果对象中返回您想要的变量。:)
但是,我仍然无法在我的脆皮表单中使用自动完成小部件 - 为此打开了一个新问题(请参阅将自动完成字段添加到模型表单时,'list' 对象没有属性 'queryset' 错误)
def get_result_value(self, result):
"""Return the value of a result."""
return result.pk #change pk to the variable of your choice
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |