用Django Raw SQL查询填充表单集

时间:2019-04-20 11:27:27

标签: django formset

我使用Django表单集工厂,并且更新视图未用 原始SQL查询并返回“ RawQuerySet”对象没有“已排序”属性 错误。 对象查询设置良好,但原始SQL查询返回此错误。

'''python
formset = modelformset_factory(model=GiftVoucherSub,
                               form=GiftVoucherSubForm,
                               extra=0,
                               can_delete=True,
                               min_num=1,
                               validate_min=True,
                               )

formset = formset(request.POST or None,
                  queryset=queryset,
                  # initial=initial,
                  prefix='rlt_giftvoucher',
                  )'''

1 个答案:

答案 0 :(得分:0)

已通过在Forms.py中添加额外字段并使用django对象查看queryset进行修复。 具有自动完成功能的passanger名称。

views
queryset = GiftVoucherSub.objects.filter(main_id=id, is_deleted=False).order_by('id')

forms
class GiftVoucherSubForm(forms.ModelForm):
passanger_id = forms.CharField(max_length=30,
                               required=False,
                               widget=forms.HiddenInput()
                               )
passanger_name = forms.CharField(widget=forms.TextInput(attrs={
                                              # 'id': 'form_fatura_cari_isim',
                                              'class': 'formset-field table-condensed clearable',
                                              'required': 'True',
                                              'autocomplete': 'off',
                                              'type': 'search',
                                              'onfocus': 'fn_search_passanger(this.id)',
                                          }
                                      )
                                      )


class Meta:
    model = GiftVoucherSub
    fields = [
              'id',
              'main_request_type',
              'sub_request_type',
              'passanger_id',
              'passanger_name',
              'is_deleted',
              ]

def __init__(self, *args, **kwargs):
    super(GiftVoucherSubForm, self).__init__(*args, **kwargs)
    if self.instance.passanger_id:
        extra_value = BoYolcuListesi.objects.get(usertableid=self.instance.passanger_id)
        self.fields['passanger_name'].initial = extra_value.isim
    self.helper = FormHelper()
    self.helper.form_tag = True
    for field in self.fields:
        self.fields[field].widget.attrs.update({'class': 'formset-field table-condensed'})
        self.fields[field].label = ''