Я пытаюсь передать аргумент "test" из этого представления в форму:
class ListCreateFormView(CreateView):
template_name = 'armybuilder_list_create.html'
model = List
form_class = CreateListForm
def form_valid(self, form):
form.instance.author = self.request.user
self.test = Faction.objects.get(title="Blood Angels")
return super().form_valid(form)
def get_success_url(self):
return reverse_lazy('add_unit_to_list', kwargs={'pk': self.object.pk, 'test': self.test.id})
В это представление и форму:
class AddUnitsToListFormView(LoginRequiredMixin,CreateView):
model = SoldierToList
form_class = SoldierToListForm
template_name = 'armybuilder_add_unit_to_list.html'
def form_valid(self, form):
form.instance.author = self.request.user
form.instance.list_id = self.kwargs['pk']
return super().form_valid(form)
class SoldierToListForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# factions_obj = Faction.objects.get(pk=my_test)
self.fields['soldier'].queryset = Soldier.objects.filter(factions=4)
class Meta:
model = SoldierToList
fields = ('soldier',)
Мои URL:
urlpatterns = [
path('list/create', ListCreateFormView.as_view(), name='create_list'),
path('list/own/<int:pk>/<int:test>/addunit', AddUnitsToListFormView.as_view(), name='add_unit_to_list'),
]
Я жестко кодирую значение 4 в моей форме, но я хотел бы использовать тест аргументов, который я определил в предыдущем представлении ListCreateFormView , подскажите, пожалуйста, как это сделать?
Спасибо