2 votes

Les données ne sont pas insérées dans la base de données Django en utilisant le formulaire DTL

Voici mon fichier model.py

class TestData(models.Model):
    test_date = models.DateField(blank=True)
    test_name = models.CharField(max_length=255)
    result = models.IntegerField()

Et voici mon fichier forms.py

class TestDataForm(forms.ModelForm):
    class Meta:
        model = TestData
        fields = ['test_date','test_name','result']

Et voici mon fichier views.py

def photo_single(request):
    if request.POST:
        form = TestDataForm(request.POST)
        if form.is_valid():
            if form.save():
                return redirect('/', messages.success(request, 'Order was successfully created.', 'alert-success'))
            else:
                return redirect('/', messages.error(request, 'Data is not saved', 'alert-danger'))
        else:
            return redirect('/', messages.error(request, 'Form is not valid', 'alert-danger'))
    else:
        form = TestDataForm()
        return render(request, 'photo_single.html', {'form':form})

et voici mon fichier photo_single.html

<form>{% csrf_token %}
  <div class="form-row">
    <div class="form-group col-md-6">
      <label for="date">Date</label>
      {{ form.test_date | add_class:'form-control' | attr:'type:date' }}
    </div>
    <div class="form-group col-md-6">
      <label for="test_name">Test Name</label>
      {{ form.test_name | add_class:'form-control' }}
    </div>
    <div class="form-group col-md-6">
      <label for="result">Result</label>
      {{ form.result | add_class:'form-control' }}
    </div>
  </div>
  <button type="submit" class="btn btn-primary" name="data">Submit</button>
</form>

Lorsque je soumets la valeur du formulaire à la base de données, j'obtiens ceci dans l'url

http://127.0.0.1:8000/photo/?test_date=2020-03-13&test_name=SUGAR&result=23&data=

et les données ne sont pas enregistrées dans la base de données. Quelqu'un peut-il m'aider à comprendre pourquoi ? Je suis dans le pétrin. Ai-je raté quelque chose ? Merci de votre compréhension.

0voto

c.grey Points 1652

Essayez ceci

def photo_single(request):
if request.POST:
    form = TestDataForm(request.POST)
    if form.is_valid():
        base_form = form.save(commit=False)
        base_form.save()
        if form.save():
            return redirect('/', messages.success(request, 'Order was successfully created.', 'alert-success'))
        else:
            return redirect('/', messages.error(request, 'Data is not saved', 'alert-danger'))
    else:
        return redirect('/', messages.error(request, 'Form is not valid', 'alert-danger'))
else:
    form = TestDataForm()
    return render(request, 'photo_single.html', {'form':form})

dans le modèle :

<form method="post" action="/your-url/">
{% csrf_token %}
---------

renvoyer cette J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X