Получение 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. Единственное отличие заключается в том, что он не будет отправлять данные между формами, а только один раз, когда все данные будут введены. Это может оказаться лучшим решением в зависимости от ваших потребностей.
Возможно, это не точное решение, но оно может направить вас по верному пути к поиску правильного решения для вашей ситуации.