[Python] Qual a diferenças entre esses dois modos de salvar informações do formulário?

Discussão em 'Python' iniciado por Stack, Outubro 26, 2024.

  1. Stack

    Stack Membro Participativo

    Estou aprendendo a usar os formulários do django e me foi apresentado duas maneiras de salvar informações de um formulário em um banco de dados. Testei as duas e ambas funcionam com validações, mas não entendi qual a diferença entre uma e outra.

    A primeira utiliza funções herdadas da classe models.Model, usando a função "objects.create(**form.cleaned_data)" e passando como parâmetro os campos do formulário.

    No exemplo abaixo, instancio a classe ProductForm que herda de 'forms.ModelForm' e utilizo a função 'cleaned_data' para passar como parâmetro.

    def product_create_view(request):

    form = ProductForm()

    if request.method == 'POST':
    form = ProductForm(request.POST or None)

    if form.is_valid():
    Product.objects.create(**form.cleaned_data)
    form = ProductForm()

    data = {}
    data['form'] = form

    return render(request, 'products/product_create.html', data)


    A segunda maneira invés de usar a funla 'objects.create(**dict)' utiliza o form.save() diretamente.

    def product_create_view(request):

    form = ProductForm()

    if request.method == 'POST':
    form = ProductForm(request.POST or None)

    if form.is_valid():
    form.save()
    form = ProductForm()

    data = {}
    data['form'] = form

    return render(request, 'products/product_create.html', data)


    Resumidamente, eu gostaria de saber há diferenças entre usar form.save() e usar Product.objects.create(**dict).

    Continue reading...

Compartilhe esta Página