Django как правильно вернуться в форму редактирования с выбранной компанией в другом окне?
Есть 3 модели:
class Company(models.Model): #Компании производители а/м
company = models.CharField(max_length=25)
class Car(models.Model): #Модели а/м
car = models.CharField(max_length=25)
company = models.ForeignKey(Company, on_delete = models.CASCADE)
class Person(models.Model): #Водители
name = models.CharField(max_length=20)
car = models.ForeignKey(Car, on_delete = models.CASCADE)
При редактировании записи Person список моделей отфильтрован по компании: forms.py:
from django import forms from .models import *
class CompanyForm(forms.ModelForm):
class Meta:
model = Company
fields = ('company',)
class CompanySelectForm(forms.Form):
company = forms.ModelChoiceField(queryset=Company.objects.all().order_by('company'))
class Meta:
fields = ('company',)
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ('name', 'car',)
def __init__(self, company, *args, **kwargs):
super(PersonForm, self).__init__(*args, **kwargs)
self.fields['car'].queryset = Car.objects.filter(company=company) #Фильтр моделей автомобилей по компании
views.py:
def edit(request, id):
person = Person.objects.get(id = id)
car = Car.objects.get(id = person.car_id)
company = Company.objects.get(id = car.company_id)
if request.method == 'POST':
form = PersonForm(car.company_id, request.POST, instance=person)
if form.is_valid():
form.save()
return redirect('/person/')
else:
companys = CompanyForm(instance=company)
form = PersonForm(car.company_id, instance=person)
return render(request, 'person/edit.html', {'companys':companys, 'form':form})
def Company_select(request):
if request.method == 'POST':
form = CompanySelectForm(request.POST)
if form.is_valid:
return redirect('/person/edit/1/') #Как правильно вернуться в форму редактирования с выбранной компанией?
else:
form = CompanySelectForm()
return render(request, 'person/company_select.html', {'form':form})