如何在Django中将多个分层数据类别关联到一个模型?

时间:2020-08-07 21:07:15

标签: django orm model django-mptt mptt

我正在创建书籍及其主题的数据库。到目前为止,我已经使用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)

0 个答案:

没有答案
相关问题