gpt4 book ai didi

javascript - Django:带有整数列表的表单

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:14:27 24 4
gpt4 key购买 nike

我有一个调用我的 django 应用程序的 javascript 应用程序( Angular )。它使用整数列表来过滤响应。在 Django 中,我使用表单来清理数据。

Javascript:

app.factory('SearchData', 
function(){
return {
shop:[],
sort:'',
xhr:'',
brand:[],
};
});
app.factory('SearchQuery',
['$http', '$location', '$route', 'SearchData',
function($http, $location, $route, SearchData){
return {
getItems: function(){
return $http.get('/search/',{
params: SearchData,
responseType: 'json',
});
}
};
}
]);

Python 形式:

class SearchForm(forms.Form):
shop = forms.IntegerField(widget=forms.SelectMultiple(),required=False)
sort = forms.CharField(max_length=1, min_length=1, required=False)
brand = forms.IntegerField(widget=forms.SelectMultiple(),required=False)

我在 shop 和 brand 中得到了一个整数列表,但我不知道如何在 django 端处理它。我不想使用 MultipleChoiceField,因为我需要以形式提供选择(这会创建不必要的查询)。我想要做的就是有一个整数列表。

上面的表单抛出“输入一个整数”。我可以放弃表单并使用 request.GET.getlist('shop') (有效)。但如果可能的话,我宁愿使用表格...

更新,现在我正在使用 MultipleChoiceField 并在 View 中验证之前传递选择。喜欢:

shops = request.GET.getlist('shop', None)
sf = SearchForm(request.GET)
sf.fields['shop'].choices = shops

它有效,但它并不漂亮。

最佳答案

使用自定义小部件/字段:

from django import forms
from django.core.exceptions import ValidationError


class MultipleValueWidget(forms.TextInput):
def value_from_datadict(self, data, files, name):
return data.getlist(name)


class MultipleValueField(forms.Field):
widget = MultipleValueWidget


def clean_int(x):
try:
return int(x)
except ValueError:
raise ValidationError("Cannot convert to integer: {}".format(repr(x)))


class MultipleIntField(MultipleValueField):
def clean(self, value):
return [clean_int(x) for x in value]


class SearchForm(forms.Form):
shop = MultipleIntField()

关于javascript - Django:带有整数列表的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29303902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com