Как настроить модели в models.py для создания категорий и подкатегорий книг, чтобы можно было указывать подкатегории для книг, относящихся к выбранным категориям? Как добавить выбор подкатегорий для книги через административную панель Django? <br/> <br/> Попытка решения: <br/> <pre><code class="python">from django.db import models class Subcategory(models.Model): title = models.TextField() class Category(models.Model): title = models.TextField() subcategories = models.ManyToManyField(Subcategory, blank=True) def __str__(self): return self.title class Author(models.Model): name = models.TextField() def __str__(self): return self.name class Book(models.Model): title = models.TextField() isbn = models.TextField(null=True, blank=True) pagecount = models.IntegerField(null=True, blank=True) publisheddate = models.TextField(null=True, blank=True) thumbnailurl = models.TextField(null=True, blank=True) shortdescription = models.TextField(null=True, blank=True) longdescription = models.TextField(null=True, blank=True) status = models.TextField(blank=True) authors = models.ManyToManyField(Author, blank=True) categories = models.ManyToManyField(Category, blank=True) subcategories = models.ManyToManyField(Subcategory, blank=True) def __str__(self): return self.title class FeedBack(models.Model): email = models.EmailField(blank=True) name = models.TextField(blank=True) comment = models.TextField(blank=True) phone = models.TextField(blank=True)
Для создания подкатегорий для категории в Django при описании моделей, вы можете использовать ManyToManyField для связи между категорией и подкатегорией. В вашем случае, модели могут быть описаны следующим образом: ```python from django.db import models class Category(models.Model): title = models.CharField(max_length=100) def __str__(self): return self.title class Subcategory(models.Model): title = models.CharField(max_length=100) category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='subcategories') def __str__(self): return self.title class Book(models.Model): title = models.CharField(max_length=100) categories = models.ManyToManyField(Category) subcategories = models.ManyToManyField(Subcategory) def __str__(self): return self.title ``` Чтобы добавить выбор подкатегорий для книги через административную панель Django, вам необходимо зарегистрировать модели в административном разделе. ```python from django.contrib import admin from .models import Category, Subcategory, Book admin.site.register(Category) admin.site.register(Subcategory) admin.site.register(Book) ``` После этого вы сможете добавлять, редактировать и удалять категории, подкатегории и книги через административную панель Django. Выбор подкатегорий для книги будет осуществляться через соответствующие интерфейсы в административной панели.
Примерно как-то так:
class Category(models.Model): title = models.TextField() category = models.ForeignKey( 'self', on_delete=models.CASCADE, null=True, blank=True, related_name='subcategories' ) def __str__(self): return self.title