Django функция включает несколько функций с возвратом - PullRequest
0 голосов
/ 14 июля 2020

Я просто хочу знать, как лучше всего выполнять многократную вставку в разные модели

допустим, я собираю данные клиента, включая

  • личную информацию
  • адресная информация
  • информация о платеже

Я собираю всю эту информацию из одной формы в одном представлении, и я хочу сделать несколько вставок в несколько моделей (CustomerInfo, CustomerAddress, CustomerPayment) как показано ниже

def insertNewCustomer():

InsertPersonalInfo()
InsertAddressInfo()
InsertPaymentInfo()

return render()



def InsertPersonalInfo(request):
     if request.moethod == 'POST'
        if form.is_valid():
           form.save()
           return ???
     
def InsertAddressInfo(request):
         if request.moethod == 'POST'
        if form.is_valid():
           form.save()
           return ???
def InsertPaymentInfo(request):
     if request.moethod == 'POST'
        if form.is_valid():
           form.save()
           return ???

, проблема в том, что мне следует вернуть после того, как я выполню процесс вставки в первой функции, которая является InsertPersonalInfo () до go, снова, чтобы вставитьNewCustomer и продолжить со следующей функции, которая является InsertAddressInfo

Надеюсь, мой вопрос ясен: D что мне нужно вернуть из вложенной функции, чтобы вернуться к основной функции и продолжить с того места, где она была вызвана.

1 Ответ

0 голосов
/ 14 июля 2020

, что от InsertPersonalInfo () до go, чтобы снова вставить NewCustomer

Вы можете посмотреть HttpResponseRedirect . Пример использования из официальных документов:

from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse

from .models import Choice, Question

def vote(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = question.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        return render(request, 'polls/detail.html', {
            'question': question,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))

Эта функция очень полезна, так как вы можете не только перенаправлять, но и передавать дополнительные параметры.

...