Я не могу получить django-autocomplete-light для пересылки значений, когда NOT в admin. Вот проблема: у меня есть 2 связанных блока выбора. Это приложение для подключения поездов, поэтому, когда вы выбираете «Город» из первого поля (вылета), на втором месте должны появляться только пункты назначения - Города, для которых есть соединение.django-autocomplete-light: Forward работает отлично в admin, но возвращает None при использовании в шаблоне
Упрощенные модели:
class City(models.Model):
name = models.CharField(max_length=64)
destinations = models.ManyToManyField(
'self',
symmetrical=False,
through='Connection')
class Connection(models.Model):
departure = models.ForeignKey(
City,
on_delete=models.CASCADE,
related_name='departure')
destination = models.ForeignKey(
City,
on_delete=models.CASCADE,
related_name='destination')
А вот мои взгляды:
class DepartureAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = City.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
class DestinationAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = City.objects.all()
departure = self.forwarded.get('departure', None)
if not departure:
return []
else:
qs = qs.filter(id=departure)[0].destinations.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
class HomeView(generic.UpdateView):
model = City
form_class = ConnectionForm
template_name = 'intercity/home_template.html'
success_url = reverse_lazy('home_view')
def get_object(self):
return City.objects.first()
Наконец мой forms.py:
class ConnectionForm(forms.ModelForm):
departure = forms.ModelChoiceField(
queryset=City.objects.all(),
widget=autocomplete.ModelSelect2(
url='departure-autocomplete'
)
)
destination = forms.ModelChoiceField(
queryset=City.objects.all(),
widget=autocomplete.ModelSelect2(
url='destination-autocomplete',
forward=['departure', ]
)
)
class Meta:
model = Connection
fields = ('__all__')
Все отлично в админ работает (вУстановка Страница подключения), но мне нужно разоблачить это на передней панели. Представленная структура html выглядит так же, как и на странице администратора, но переадресованный идентификатор первого поля выбора не передается правильно (None).
Любые советы/помощь оценены!