Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-模型选择字段验证_Django - Fatal编程技术网

Django-模型选择字段验证

Django-模型选择字段验证,django,Django,我有一个简单的表单,就是Choicefield。这是my view.py文件的一部分: def premium(request, id): context = {} try: site = Site.objects.get(id=id) except Site.DoesNotExist: raise Http404("Nie ma takiej strony") if request.method == 'POST':

我有一个简单的表单,就是Choicefield。这是my view.py文件的一部分:

def premium(request, id):
    context = {}
    try:
        site = Site.objects.get(id=id)
    except Site.DoesNotExist:
        raise Http404("Nie ma takiej strony")
    if request.method == 'POST':
        premium_form = PremiumForm(request.POST)
        if premium_form.is_valid():
            # group = Group.objects.get(id=request.POST["kod"])
            print('OK')
        else:
            print('NOT OK')
    else:
        premium_form = PremiumForm(site)
        premium_form.fields['group'].queryset = 
premium_form.fields['group'].queryset.exclude(group_name=site.group)

    context['site'] = site
    context['form'] = premium_form
    context['category'] = site.category
    context['subcategory'] = site.subcategory
    return render(request, 'mainapp/premium.html', context)
这是我的表格:

class PremiumForm(forms.Form):
    def __init__(self, site, *args, **kwargs):
        super(PremiumForm, self).__init__(*args, **kwargs)
        self.fields['group'].initial = 2
        self.fields['group'].empty_label = None

    group = forms.ModelChoiceField(
        queryset=Group.objects.filter(is_active=True),
        help_text="<div id='group'></div>",
        label="Some text",
        required=False)
My premium.html文件:

<form method="post" action="" class="form-horizontal">
            {% csrf_token %}
            {% bootstrap_form form layout='horizontal'%} <br>
            {% bootstrap_button "Submit" size='large' button_type="submit" button_class="btn-primary btn-main-add" %}
        </form>

当我按下提交按钮时,我不确定。我解决不了这个问题。我不知道如何验证forms.ModelChoiceField。感谢您的帮助。

表格应使用kwargs缩写:

premium_form = PremiumForm(site=site)
在init内部:

def __init__(self, *args, **kwargs):
    site = kwargs['site']

但是,表单初始化中不使用站点,因此您可以将其删除,它将解决此问题。

使用printpremium\u form.errors发布后调试并将结果发布到问题中printpremium\u form.errors没有错误。我得到空行…关于非字段错误呢?嗯-我添加了printprium\u form.non\u field\u errors,我让你用site参数初始化表单,但从不在表单内部使用它。删除它就行了