Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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中设计models.py以插入QueryDict_Python_Django - Fatal编程技术网

Python 如何在django中设计models.py以插入QueryDict

Python 如何在django中设计models.py以插入QueryDict,python,django,Python,Django,我的表格.py from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User from item.models import * from django import forms class catalogForm(forms.Form): title = forms.CharField(widget=forms.TextInput(attrs=d

我的表格.py

from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from item.models import *
from django import forms


class catalogForm(forms.Form):
    title = forms.CharField(widget=forms.TextInput(attrs=dict(required=True, max_length=30, render_value=False)), label=_("Catalog Title"))
    #item = forms.ModelMultipleChoiceField(queryset=Item.objects.exclude(user=1), widget=forms.SelectMultiple)

    #def __init__(self, userId, *args, **kwargs):
        #super(catalogForm, self).__init__(*args, **kwargs)
        #self.fields['item'].queryset = Item.objects.filter(user = userId)
    def __init__(self, qs=None, *args, **kwargs):
        super(catalogForm, self).__init__(*args, **kwargs)
        if qs:
            self.fields['item'] = forms.ModelMultipleChoiceField(queryset=qs, widget=forms.CheckboxSelectMultiple())
我的模特

from django.db import models
from item.models import Item
from django.contrib.auth.models import User


class Catalog(models.Model):
    title = models.CharField(max_length=200)
    item = models.ManyToManyField(Item, blank=True, null=True)
    user = models.ForeignKey(User)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.title
我的观点

def catalog(request):
    # if this is a POST request we need to process the form data
    qs = Item.objects.filter(user = request.user)
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = catalogForm(qs,request.POST)
        # check whether it's valid:
        if form.is_valid():
            title=form.cleaned_data['title']
            item=form.cleaned_data['item']
            user= request.user
            q = Catalog(title=title, pub_date=timezone.now(),user=user)
            q.save()
            q.item = item.values()
            return HttpResponseRedirect('/thanks/')

    # if a GET (or any other method) we'll create a blank form
    else:
        form = catalogForm(qs)

    return render(request, 'catalog/catalog.html', {'form': form}) 
因此,我想从组合框
中选择多个
,并针对特定的
目录插入它们的
ID
。还希望稍后检索特定
目录的每个
项目Id
。在
django

现在,如果我尝试使用此代码插入,我只能插入到
catalog\u catalog
中,如何插入到选定的
item
catalog\u catalog\u item
表中


提前感谢您的帮助。

您需要使用此模型字段(请记住运行迁移):

然后在保存表单时,首先保存目录对象,然后添加相关项:

items = form.cleaned_data['items']

q = Catalog(title=title, pub_date=timezone.now(), user=user)
q.save()
q.items = items.values()

使用
items.values()。q=Catalog(title=title,pub_date=timezone.now(),user=user)q.save()
这会在两个表中保存数据吗?
items = form.cleaned_data['items']

q = Catalog(title=title, pub_date=timezone.now(), user=user)
q.save()
q.items = items.values()