De la même façon qu’on peut générer un formulaire facilement avec le modèle, on peut facilement insérer dans la base de données une entité provenant d’un formulaire HTML généré de cette façon, ou en le construisant from scratch depuis une méthode de view
#models.py class Foo(models.Model): name = models.CharField(max_length=100) #view.py def add(request): foo_instance = Foo.objects.create(name='test') return render(request, 'some_name.html.html')
Ou l’on peut se servir du model directement
from django.http import HttpResponse from django.template import loader from .models import Article def index(request): article = Article() article.title = 'This is the title' article.contents = 'This is the content' article.save() template = loader.get_template('articles/index.html') context = { 'new_article_id': article.pk, } return HttpResponse(template.render(context, request))
En utilisant les model form c’et plus simple
# views.py def monform(request): if request.method == 'POST': # create a form instance and populate it with data from the request: form = MyProductForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/products/thanks') # if a GET (or any other method) we'll create a blank form else: form = MyProductForm() return render(request, 'myproductform.html', {'form': form}) #form.py class MyProductForm(ModelForm): class Meta: model = Product fields = ['name', 'price', 'stock', 'image'] #or use tuple #models.py class Product(models.Model): name = models.CharField(max_length=50) price = models.FloatField() stock = models.IntegerField() image = models.CharField(max_length=2000)