Как переместить выделенный объект в форме из одного вида в другой? - PullRequest
0 голосов
/ 21 июня 2019

Я новичок в Django, надеюсь, вы мне поможете.

У меня есть модель с именем Derogation с 3 ForeignKey.У меня есть 2 форм (с каждым одним или двумя ModelChoiceField), распределенных по нескольким представлениям.В заключение я хотел бы восстановить все эти экземпляры, чтобы создать объект Derogation и сохранить его в базе данных.

Я пытался передать объекты через URL-адреса, но я неуверен, как это работает.Я не хочу использовать сессии.

models.py

class Derogation(models.Model):
    createur = models.ForeignKey(Createur, on_delete=models.CASCADE)
    individu = models.ForeignKey(Individu, on_delete=models.CASCADE)
    raison = models.ForeignKey(Raison, on_delete=models.CASCADE)

forms.py

class IndividuForm(forms.Form):
    individu = forms.ModelChoiceField(queryset=Individu.objects.order_by('nom'), empty_label="")

class RaisonForm(forms.Form):
    raison = forms.ModelChoiceField(queryset=Raison.objects.all(), empty_label="")

class CreateurForm(forms.Form):
    createur = forms.ModelChoiceField(queryset=Createur.objects.all(), empty_label="")

views.py

def index(request):
    individu_form = IndividuForm(request.POST or None)
    if individu_form.is_valid():
        individu = individu_form()
        return HttpResponseRedirect('/raison/%s' % individu) #Not sure
    return render(request, 'derog_bv/index.html', {'individu_form':individu_form})

def raison(request, individu):
    raison_form = RaisonForm(request.POST or None)
    createur_form = CreateurForm(request.POST or None)
    if raison_form.is_valid() and createur_form.is_valid():
        raison = raison_form()
        createur = createur_form()
        return HttpResponseRedirect('/recap/%s%s%s' %individu %raison %createur) #really not sure
    return render(request, 'derog_bv/raison.html', {'raison_form':raison_form})

def recap(request, individu, raison, createur):
    #Here I want to save my Derogation object
    return render(request, 'derog_bv/recap.html')
...