django数据库模型和xadmin, 二级分类后台信息录入时先选第一级分类, 在选第二级分类

我要做一个图书分类
一共有二级类:

图书第一类别表(id(主键), name)
图书第二类别表(id(表), fist_type(外键到第一类别表), name)

还有一个图书信息表

(只外键了第二类别表)

想在xadmin后台添加图书信息的时候, 先选择第一类别,在选择第二类别

图片描述

图片描述

图片描述

from django.db import models


# Create your models here.
class BookFirstType(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField('名称', max_length=200)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "图书第一类别"
        verbose_name_plural = verbose_name


class BookSecondType(models.Model):
    id = models.AutoField(primary_key=True)
    first_type = models.ForeignKey(BookFirstType, on_delete=models.CASCADE, verbose_name='第一类别')  # 级联删除, 如果父表中的记录被删除,则子表中对应的记录自动被删除
    name = models.CharField('名称', max_length=200)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "图书第二类别"
        verbose_name_plural = verbose_name


class BookInfo(models.Model):
    id = models.AutoField(primary_key=True)
    second_type = models.ForeignKey(BookSecondType, on_delete=models.CASCADE, verbose_name='第二类别')
    name = models.CharField('书名', max_length=200)
    author = models.CharField('作者', max_length=200)
    note = models.TextField('简介', max_length=10000)
    money = models.CharField('价格', max_length=200)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "图书信息"
        verbose_name_plural = verbose_name
阅读 3.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题