如何修复Python/Djang中没有属性'get'(AttributeError)的'list'对象

2024-05-23 16:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用窗体在数据库中创建新对象,但无法运行此视图。我需要在哪里做一些更改?你知道吗

我试图删除“def get”函数,但它只是一个白色的屏幕,就像之后的空白页。你知道吗

class AddOrderForm(forms.Form):
    airport         =   forms.ChoiceField(choices=AIRPORT_CHOICES, widget=forms.RadioSelect(AIRPORT_CHOICES))
    direction       =   forms.ChoiceField(choices=DIRECTION_CHOICES)
    adress          =   forms.CharField(widget=forms.TextInput(attrs={"placeholder": "Turmstraße 57"}))
    client          =   forms.CharField()
    telephone       =   forms.CharField(widget=forms.TextInput(attrs={"placeholder": "+49XXXXXXXXX"}))
    flight_number   =   forms.CharField(widget=forms.TextInput(attrs={"placeholder": "LL 0000"}))
    plane           =   forms.DateTimeField(input_formats=['%Y-%m-%d'])
    pick_up         =   forms.DateTimeField(input_formats=['%Y-%m-%d'])
    gate            =   forms.CharField(widget=forms.TextInput(attrs={"placeholder": "G or A11"}))
    driver          =   forms.ChoiceField(choices=DRIVER_CHOICES)

class AddOrderView(View):

def get(self, request):
    form = AddOrderForm()
    return render(request, 'orders/add_order.html', {'form': form})

def post(self, request, *args, **kwargs):
    form = AddOrderForm(request.POST)
    if form.is_valid():
        order = Order.objects.create(airport=form.cleaned_data['airport'],
                                     direction=form.cleaned_data['direction'],
                                     adress=form.cleaned_data['adress'],
                                     client=form.cleaned_data['client'],
                                     telephone=form.cleaned_data['telephone'],
                                     flight_number=form.cleaned_data['flight_number'],
                                     plane=form.cleaned_data['plane'],
                                     pick_up=form.cleaned_data['pick_up'],
                                     gate=form.cleaned_data['gate'],
                                     driver=form.cleaned_data['driver'])
        return redirect(f'order/{order.id}')
    return render(request, 'orders/add_order.html', {'form': form})

Tags: formdatarequestdeforderformstextinputwidget
2条回答

def get()函数返回add_订单.html这就是为什么当你试图删除函数时,Html页面并没有显示任何数据,最终显示为空白。你知道吗

RadioSelect的第一个参数应该是attrs,但您正在传递选择。你知道吗

表单字段将负责向小部件传递选择,因此最简单的解决方案是将代码更改为widget=forms.RadioSelect。你知道吗

airport = forms.ChoiceField(choices=AIRPORT_CHOICES, widget=forms.RadioSelect)

相关问题 更多 >