Django中的过滤ModelForm在web窗体中显示空选项

2024-03-28 08:15:47 发布

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

我试着按Djangos股票组过滤一些选择,但是当我在web表单中这样做时是空的。你知道吗

如果我在过滤时直接输入组号,它就起作用了。也许我的论点有问题?你知道吗

在视图.py我有:

class AddSupplier(generic.View):
    form_class = CreateOrder
    template_name = 'order/order_form.html'

    #blank, ce je get metoda
    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})

    def post(self, request):

        group = self.request.user.groups.values_list('id', flat=True).first()
        # I tried:
        # group = self.request.user.groups.all() 
        # same result

        form = self.form_class(group, request.POST)

        if form.is_valid():
            createS = form.save(commit=False)

            supplier = form.cleaned_data['supplier']

            createS.save()

        return render(request, self.template_name, {'form': form})

你知道吗表单.py你知道吗

class CreateOrder(forms.ModelForm):
    def __init__(self, group,*args,**kwargs):
        super (CreateOrder, self ).__init__(*args,**kwargs)
        self.fields['supplier'].queryset = Supplier.objects.filter(group_s=group) # if I put group = 1 it works

    class Meta:
        model = Order
        fields = [
            'supplier',
        ]

思维是如何联系在一起的型号.py地址:

class Supplier(models.Model):
    #...
    group_s = models.ManyToManyField(Group, help_text="kateri dobavitelji imajo katere stranke")
    #...

class Order(models.Model):
    #...
    supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, null=True)
    #...

Tags: namepyselfform表单modelsrequestdef
1条回答
网友
1楼 · 发布于 2024-03-28 08:15:47

在实例化get请求的表单时,当前没有包含group。尝试将代码更改为:

def get(self, request):
    group = self.request.user.groups.values_list('id', flat=True).first()
    form = self.form_class(group, None)
    return render(request, self.template_name, {'form': form})

相关问题 更多 >