Я хочу знать, как я могу соединить 2 модели, чтобы создать раскрывающийся список, который зависит друг от друга.
На момент написания, это мои модели для видео:
class AMLVideo(models.Model):
LANGUAGE = (
('LAN', 'Language'),
('FR', 'French'),
('EN', 'English'),
('HIN', 'Hindi'),
('SPA', 'Spanish'),
('GER', 'German'),
)
LEVEL = (
('BEG', 'Beginner'),
('INT', 'Intermediary'),
('ADV', 'Advanced'),
)
CATEGORY = (
('ANI', 'Animal'),
('ENV', 'Environmental'),
('MOR', 'Moral'),
('FOLK', 'Folktales'),
('ADN', 'Adventure'),
('POE', 'Poems'),
('FUN', 'Funny'),
)
slug = models.SlugField(max_length=50, default='Enter-Slug-Here')
level = models.CharField(max_length=100, choices=LEVEL, default='level', blank=True)
language = models.CharField(max_length=100, choices=LANGUAGE, default='language', blank=True)
category = models.CharField(max_length=100, choices=CATEGORY, default='category', blank=True)
video = EmbedVideoField(verbose_name='Videos',
help_text='URL of Video')
def __str__(self):
return self.slug
class Meta:
verbose_name = "video"
verbose_name_plural = "videos"
Это представления, которые уже показывают видео с использованием iframe
def home(request):
videos = AMLVideo.objects.all()
# Get category from filter
category = request.GET.get('category', '')
if category:
videos = videos.filter(
category__exact=category
)
# Get language from filter
language = request.GET.get('language', '')
if language:
videos = videos.filter(
language__exact=language
)
# Get level from filter
level = request.GET.get('level', '')
if level:
videos = videos.filter(
level__exact=level
)
videos = videos.order_by("-category", "-language", "-level")
context = {'videos': videos}
return render (request, 'home.html', context)
Теперь для раскрывающегося списка, я не совсем уверен, как показать его, используя модель или форму в шаблоне.
Я надеялся, что если пользователь выберет что-либо из раскрывающегося списка, то показанные видео будут основаны на раскрывающемся списке, выбранном пользователем.
Возможно ли это?