アップロードするファイルのカテゴリを追加するようにユーザーに求めるフォームがあります。これはManytoManyField
です。ただし、このフィールドの値はデータベースに追加されていないため、理由がわかりません。以下のコードの変数はdescategories
<form enctype="multipart/form-data" method="POST" action="" class="uniForm">
<fieldset class="inlineLabels">
{% csrf_token %}
<table>
<tr>
<td>Design Title:</td><td>{{ formtoadddesign.modelname}}</td></td></tr>
<tr><td>Author:</td> <td>{{ formtoadddesign.author }}</td></tr>
<tr><td>Description:</td> <td>{{ formtoadddesign.description }}</td></tr>
{% comment %}<tr><td>Design Image:   </td><td>{{ formtoadddesign.partimage }}</td></tr>{% endcomment %}
<tr><td>Tags:</td><td>{{formtoadddesign.tags}}</td></tr>
<tr><td>Format:</td><td>{{formtoadddesign.format}}</td></tr>
<tr><td>Category:</td><td>{{formtoadddesign.descategories}}</td></tr>
<tr><td>Attach File</td><td>{{formtoadddesign.content}}</td></tr>
</div>
</table>
<br>
<div class="form_block">
<input type="submit" class="btn btn-success" value="{% trans 'Add Design' %}">
</div>
<br>
</fieldset>
</form>
私の中には次のコードがありますviews.py
:
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
ManytoManyField
基本的に、私は、基本的に人々が選択できる形式のリストであるから選択された値を取得できないようです。これらの値にアクセスするにはどうすればよいですか-cats.all()
何も返さないので、何か間違ったことをしている必要があります...
これが私のフォームです:
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