Как открыть heirarchy детей конкретного иностранного ключа в Django? - PullRequest
0 голосов
/ 06 декабря 2018

Я новичок в Django и пытаюсь создать образовательное приложение.У меня есть модель иерархии как субъект> Уровень> Глава> Тема> Статья

Я хочу добавить статьи по определенной теме в определенную главу определенного уровня в теме?Как можно открыть детей конкретного ForeignKey?Например, я хочу, чтобы это была панель администратора. Если я нажимаю на тему, я получаю «Уровни детей», затем «Главы детей» и т. Д. ...

models.py

from django.db import models


class Subject(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class Level(models.Model):
    name = models.CharField(max_length=50)
    subject = models.ForeignKey(Subject, default=1, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.name



class Chapter(models.Model):
    name = models.CharField(max_length=50)
    level = models.ForeignKey(Level, default=1, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.name


class Topic(models.Model):
    name = models.TextField(max_length=50)
    chapter = models.ForeignKey(Chapter, default=1, null=True, on_delete=models.CASCADE

    def __str__(self):
        return self.name


class Article(models.Model):
    title = models.CharField(max_length=50)
    body = models.TextField()

    topic = models.ForeignKey(Topic, default=1, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

admin.py

from django.contrib import admin

from .models import Level, Subject, Article, Chapter, Topic

admin.site.register(Level)
admin.site.register(Subject)
admin.site.register(Article)
admin.site.register(Chapter)
admin.site.register(Topic)

1 Ответ

0 голосов
/ 06 декабря 2018

Я добился этого, используя -

https://github.com/theatlantic/django-nested-admin Администратор будет выглядеть примерно так:

class SubjectInline(nested_admin.NestedTabularInline):
    model = Subject
    extra = 1


class LevelInline(nested_admin.NestedTabularInline):
    inlines = [SubjectInline]
    model = Level
    extra = 1


class ChapterInline(nested_admin.NestedTabularInline):
    inlines = [LevelInline]
    model = Chapter
    extra = 1

class TopicInline(nested_admin.NestedTabularInline):
    inlines = [ChapterInline]
    model = Topic
    extra = 1

class ArticleAdmin(nested_admin.NestedModelAdmin):
    inlines = [TopicInline]
    model = Article
admin.site.register(Article, ArticleAdmin)
...