Получение Id другой Django-формы внутри другой Django-формы

Привет, ребята, я хочу создать несколько форм, таких как эта: запрашивать имя подключения и тип подключения и сохранять их в базе данных и после этого перенаправить пользователя на новую форму для деталей подключения, но я хочу, чтобы одно поле в качестве внешнего ключа указывало на элемент, созданный в последней форме.

модели:

from django import models

class Form1Model(models.Model):
    name = models.CharField(max_length=100)
    connection_type=models.CharField(max_length=100)
    
    
    def __str__(self) -> str:
        return self.name


class Form2Model(models.Model):
    name=models.CharField(max_length=100)
    protocol=models.CharField(max_length=5)
    connection_name=models.ForeignKey(Form1, on_delete=models.CASCADE)
    
    
    def __str__(self) -> str:
        return self.name

мои формы:

from django import forms

from inventory.models import Form1, Form2


class Form1Form(forms.ModelForm):
    class Meta:
        model = Form1
        fields = "__all__"


class Form2Form(forms.ModelForm):
    form1 = forms.ModelChoiceField(queryset=Form1.objects.all())

    class Meta:
        model = Form2
        fields = ["form1", "name", "protocol"]

Теперь я хочу знать, как я должен создавать свои виды Thnx за помощь ребята.

Я спросил у Codeium AI, и он выдал такой код:

from django.shortcuts import render, redirect
from django.views.generic import CreateView
from .forms import Form1Form, Form2Form
from .models import Form1, Form2

class Form1CreateView(CreateView):
    model = Form1
    form_class = Form1Form
    template_name = 'form1_form.html'
    success_url = '/form2/'  # redirect to form2 view

    def form_valid(self, form):
        form.save()
        return redirect('form2', pk=form.instance.pk)  # pass Form1 instance pk to form2 view

class Form2CreateView(CreateView):
    model = Form2
    form_class = Form2Form
    template_name = 'form2_form.html'

    def get_initial(self):
        form1_pk = self.kwargs['pk']
        form1_instance = Form1.objects.get(pk=form1_pk)
        return {'form1': form1_instance}  # pre-populate form1 field with Form1 instance

    def form_valid(self, form):
        form.save()
        return redirect('success_url')  # redirect to success URL

Я сделал нечто похожее на это, используя нижеприведенное видео с использованием мастера форм django. Единственное отличие заключается в том, что он не будет отправлять данные между формами, а только один раз, когда все данные будут введены. Это может оказаться лучшим решением в зависимости от ваших потребностей.

Возможно, это не точное решение, но оно может направить вас по верному пути к поиску правильного решения для вашей ситуации.

Django Form Wizard

Вернуться на верх