Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
Python django可选-从模板保存数据时出现问题_Python_Django_Django Apps - Fatal编程技术网

Python django可选-从模板保存数据时出现问题

Python django可选-从模板保存数据时出现问题,python,django,django-apps,Python,Django,Django Apps,我正在使用django Selective,但无法从模板中保存表示类别id的“id”('autocomplete_1') models.py class Category(models.Model): cat_no = models.IntegerField(null=True, blank=True) cat_txt = models.CharField(max_length=45) def __unicode__(self): return self.cat_txt cla

我正在使用django Selective,但无法从模板中保存表示类别id的“id”('autocomplete_1')

models.py

class Category(models.Model):
cat_no = models.IntegerField(null=True, blank=True)
cat_txt = models.CharField(max_length=45)    
def __unicode__(self):
    return self.cat_txt

class Cattest(models.Model):
category = models.ForeignKey(Category)    
info = models.CharField(max_length=35, blank=True) 
查找.py

class CategoryLookup(ModelLookup):
model = Category
search_fields = ('cat_txt__icontains', )
forms.py

class CategoryForm(forms.Form):
autocomplete = forms.CharField(
    label='Type the name of a category (AutoCompleteWidget)',
    widget=selectable.AutoCompleteWidget(CategoryLookup),
    required=False,
)
autocompleteselect = selectable.AutoCompleteSelectField(
    lookup_class=CategoryLookup,
    label='Select a category (AutoCompleteField)',
    required=False,
)

class CattestForm(forms.Form):
#model = cattest
#fields = ('category', 'info')
autocomplete = forms.CharField(
    label='Type the name of a category (AutoCompleteSelectWidget)',
    widget=selectable.AutoCompleteSelectWidget(CategoryLookup),
    required=False,
)
info = forms.CharField(max_length=35, label="Information")   
views.py

def cattest(request):
if request.method == 'POST':
    form = CattestForm(request.POST)
    if form.is_valid():
        cattest = Cattest.objects.create(
            category=form.cleaned_data['autocomplete_1'],
            info=form.cleaned_data['info'],
        )
        # Always redirect after a POST
        return http.HttpResponseRedirect('/bsmain/login_customer')            
else:
    if request.GET:
        form = CattestForm(initial=request.GET)
    else:
        form = CattestForm()
return render_to_response('bsmain/form.html', {'form': form}, context_instance=RequestContext(request))
回溯:

/bsmain/cattest处的键错误/

“自动完成1”

申请方式:邮寄 请求URL: Django版本:1.3.1 异常类型:KeyError 异常值:

“自动完成1”

异常位置:/home/bill/workspace/boatsite/。/boatsite/bsmain/views.py在cattest中,第64行 Python可执行文件:/usr/bin/Python Python版本:2.6.5

请求信息

得不到数据 后置变量值

   info             u'44# Bruce'
   csrfmiddlewaretoken     u'9ffe49bd68be04087521e71e86a5bec0'
   autocomplete_1   u'10'
   autocomplete_0   u'Anchors'

表单数据字典根据字段名填充。您应该从
form.cleaned_data['autocomplete']
访问数据

编辑:

通过使用
模型表单
,这可能会更容易:

class CattestForm(forms.ModelForm):

    class Meta:
        model = Cattest
        fields = ('category', 'info', )
        widgets = {
            'category': selectable.AutoCompleteSelectWidget(CategoryLookup)
        }


def cattest(request):
    if request.method == 'POST':
        form = CattestForm(request.POST)
        if form.is_valid():
            cattest = form.save()
            # Always redirect after a POST
            return http.HttpResponseRedirect('/bsmain/login_customer')            
    else:
        initial = request.GET or None
        form = CattestForm(initial=initial)
    return render_to_response('bsmain/form.html', {'form': form}, context_instance=RequestContext(request))

马克,我以前试过。我收到一个错误:ValueError位于/bsmain/cattest/无法分配“u”:“cattest.category”必须是“category”实例…如果我使用form.cleaned_数据['category']我在/bsmain/cattest/“category”上收到了KeyError,我认为django Selective是一个很棒的应用程序,我希望我能尽快让它为我工作。与您当前的表单相关的一些问题<代码>自动完成不是必需的,但要填充的类别是。它也不会将正确的类型作为第一条注释返回。我添加了一个使用ModelForm的示例。谢谢Mark。终于成功了!我很接近,但接近并不能阻止它。我仍然不知道表单如何知道如何收集id而不是值,但它是有效的。我稍后会想出“怎么做”。现在,我可以前进并处理链式选择。喜欢你的应用程序。