在Django中将对象添加到数据库后添加多对多值
我有一个表单,要求用户为他们正在上传的文件添加一个类别,这是一个ManytoManyField。但是,这个字段的值没有被添加到数据库中,我不知道为什么。下面代码中的变量是desccategories 基本上,我似乎无法从ManytoManyField中获取选择的值,该字段基本上是一个列表,人们可以从中进行选择。我如何访问这些值-cats.all不返回任何内容,所以我一定是做错了什么 这是我的表格:在Django中将对象添加到数据库后添加多对多值,django,Django,我有一个表单,要求用户为他们正在上传的文件添加一个类别,这是一个ManytoManyField。但是,这个字段的值没有被添加到数据库中,我不知道为什么。下面代码中的变量是desccategories 基本上,我似乎无法从ManytoManyField中获取选择的值,该字段基本上是一个列表,人们可以从中进行选择。我如何访问这些值-cats.all不返回任何内容,所以我一定是做错了什么 这是我的表格: class designform(ModelForm): def __init__(sel
class designform(ModelForm):
def __init__(self, *args, **kwargs):
super(designform, self).__init__(*args,**kwargs)
self.is_update=False
def clean(self):
"""
Do Validation stuff
"""
if 'modelname' not in self.cleaned_data:
return
if not self.is_update:
return self.cleaned_data
class Meta:
model = Design
因为您使用的是savecommit=False,所以需要save_m2m
请参见您也可以发布您的表格吗
def add_design (request):
# POST request
if request.method == "POST":
formtoadddesign = designform(request.POST, request.FILES)
if formtoadddesign.is_valid():
new_design = formtoadddesign.save(commit=False)
new_design.adder = request.user
designname = new_design.modelname
format = new_design.format
adder_id = new_design.adder.id
file = request.FILES['content']
filename = file.name
filecontent = file.read()
file.seek(0)
new_design.content=store_in_s3_design(filename, filecontent, designname, format, adder_id)
new_design.save()
cats = new_design.descategories
print "new_design id:", repr(new_design.id)
print cats
for cat in cats.all():
new_design.designcategory_id.add(cat)
print "added %s" % cat
class designform(ModelForm):
def __init__(self, *args, **kwargs):
super(designform, self).__init__(*args,**kwargs)
self.is_update=False
def clean(self):
"""
Do Validation stuff
"""
if 'modelname' not in self.cleaned_data:
return
if not self.is_update:
return self.cleaned_data
class Meta:
model = Design