Python 如何在django中设计models.py以插入QueryDict
我的表格.pyPython 如何在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
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()