Как настроить модели в 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