django多形式和文件字段

时间:2018-03-04 18:32:26

标签: django

我目前正在一个视图上使用多个差异表单。我可以填写表格但是当我提交其中一个表格时,我的表格似乎无效。我显示了request.POST(它包含我的所有信息)和我的表单(它包含我的信息,除了文件部分。)

你能解释一下如何纠正它吗? 它可以链接到我的模型吗?

(我正在使用bootstrap 3到django)

我的观点:

def view_addfiles(request):
try:
    print(request.POST)
except:
    {}
if request.method == 'POST' and 'search' in request.POST:
    print("recherche")
    recherche=searchbar(request.POST, prefix='search')
    if recherche.is_valid():
        print("recherche")
else : 
    recherche=searchbar(prefix='search')

if request.method == 'POST' and 'film' in request.POST:
    print("film")
    addfilm=Addfilms(request.POST,request.FILES, prefix='film')
    print(addfilm)
    if addfilm.is_valid():
        print("film")
        return redirect(view_accueil, inscription=3)

else :
    print("dfsd")
    addfilm=Addfilms(prefix='film')

if request.method == 'POST' and 'serie' in request.POST:
    print("serie")
    addserie=Addseries(request.POST,request.FILES, prefix='serie')
    if addserie.is_valid():
        print("serie")
        return redirect(view_accueil, inscription=3)
else : 
    addserie=Addseries(prefix='serie')


return render(request, 'menuAjout.html',locals())

我的HTML:

<form action="{% url "add_files" %}" method="post">
{% csrf_token %}
{{ recherche.as_p }}
<input type="submit" id="validation" name="search"/>
</form>
<div id="films">
{% load bootstrap3 %}
{% bootstrap_css %} 

<form action="{% url "add_files" %}" method="post">
    {% csrf_token %}
    {% bootstrap_form addfilm %}
    {% buttons %}
    <button type="submit" class="btn btn-primary" id="submitbutton" name="film" value="submit">
      {% bootstrap_icon "star" %} Ajouter
    </button>
  {% endbuttons %}
</form>
</div>
<div id="series">
<form action="{% url "add_files" %}" method="post">
    {% csrf_token %}
    {% bootstrap_form addserie %}
    {% buttons %}
    <button type="submit" class="btn btn-primary" id="submitbutton" name="serie">
      {% bootstrap_icon "star" %} Ajouter
    </button>
  {% endbuttons %}
</form>
</div>

我的表格:

class Addseries(forms.ModelForm):
    class Meta:
        model = series
        exclude = ('nbTelechargement','datedepot')

class Addfilms(forms.ModelForm):
    class Meta:
        model = series
        exclude = ('nbTelechargement','datedepot')

class searchbar(forms.Form):
    motclef=forms.CharField(max_length=15,widget=forms.TextInput(attrs={'placeholder': 'Search...','style':'background :#ededef url("/static/image/search.png") no-repeat;background-size: auto 90%;'}))
    categorie=forms.ChoiceField(choices=(('films', 'films'),
                                                  ('séries', 'séries'),
                                                  ('jeux', 'jeux'),
                                                  ('logiciels', 'logiciels'),
                                                  ('livres', 'livres'),
                                                  ('musiques', 'musiques')))

2 个答案:

答案 0 :(得分:0)

我看到了几件事:

  1. 它不是Django问题,而是HTML问题:
  2. 当用户提交表单时,他/她只提交表单。 Django仅在request.POST中收到一个表单发送的数据。

    1. 您的表单共享相同的字段&#39;名。
    2. Addseries.nbTelechargementAddfilms.nbTelechargementrequest.POST

      中具有相同的密钥

答案 1 :(得分:0)

我忘了添加enctype =&#34; multipart / form-data&#34;在我的形式balise。

我的要求.FILES因此而空了。

因此我的表格无效。