我正在创建书籍及其主题的数据库。到目前为止,我已经使用django-mptt创建了主题层次结构,即:
小说:
----科幻
----浪漫
非小说类:
----科学
--------化学
------------分子化学
--------物理
----历史
我无法弄清楚如何使一本书与多个主题相关联。例如,一本书可能是关于分子化学的历史的。
我应该怎么做?
到目前为止,我的代码:
models.py:
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
from people.models import Person
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField('people.Person')
subject = TreeForeignKey('Subject', null=True, blank=True, on_delete=models.PROTECT)
class Subject(MPTTModel):
subject_type = models.CharField(max_length=30, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.PROTECT)
slug = models.SlugField()
class MPTTMeta:
order_insertion_by = ['subject_type']
class Meta:
unique_together = ('parent', 'slug',)
verbose_name_plural = 'Subjects'
admin.py:
from django.contrib import admin
# Register your models here.
from people.models import Person, Recommender
from books.models import Book, Subject
from mptt.admin import MPTTModelAdmin
admin.site.register(Person)
admin.site.register(Recommender)
admin.site.register(Book)
admin.site.register(Subject, MPTTModelAdmin)