Я создал простое книжное приложение с 3 моделями: Книга, Автор, Жанр. Все отлично работает, и теперь я хочу создать Select-Field для жанра. Содержимое поля выбора должно быть набором запросов из существующих жанров. Поле выбора должно быть в шаблоне, и когда я выбираю жанр и нажимаю кнопку поиска, в нем должен быть указан жанр и его книги. Поскольку я не могу понять, что мне нужна ваша помощь по следующим вопросам:
- Где мне нужно создать поле выбора и можно ли его реализовать?
- Что мне нужно сделатьсделать в views.py?
Вот что я сделал до сих пор в forms.py:
class GenreSelectForm(forms.Form):
categories = forms.ModelChoiceField(queryset=Genre.objects.all())
Кроме того, я создал шаблон (genre_select.html) следующим образом:
{% block content %}
<h4>Searching</h4>
<form action="" method="GET"></form>
{{ form.as_p }}
<button type="submit">Search</button>
{% endblock %}
Однако я не знаю, является ли это правильным способом и как его реализовать.
Вот мои модели.py
from django.db import models
class Genre(models.Model):
name = models.CharField(max_length=25)
def __str__(self):
return self.name
@property
def get_books(self):
return Book.objects.filter(genre__name=self.name)
class Author(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=128)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
genre = models.ForeignKey(Genre, on_delete=models.CASCADE)
isbn = models.CharField(max_length=10)
price = models.DecimalField(max_digits=7, decimal_places=2)
date_published = models.DateField()
def __str__(self):
return self.title