在Django管理界面中设置与所选模型类的关系

问题:
如何通过 Django Admin 界面动态添加从所选模型实例到任何其他 Django 模型的关系?

描述:

我想Categories通过 Django 管理界面创建。每个Category都有多个Choices分配给它。Choice(s)from givenCategory只能分配给另一个特定 Django 类(模型)的对象。让我们提供一个伪代码示例:

class Category(models.Model):
    category_name = models.CharField()


class Choice(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="choices")
    choice_name = models.CharField()


class ModelWithChoosableFields(models.Model):
    possible_categories = ...   # objects of class Category
    selected_choices = ...   # objects of class Choice

    class Meta:
        abstract = True


class Book(ModelWithChoosableFields):
    ...

class Animal(ModelWithChoosableFields):
    ...
  • Categorywithcategory_name = 'Genre'有三种可能
    Choiceschoice_name = 'biography',choice_name = 'thriller'
    choice_name = 'poetry'

    Categorywithcategory_name = 'Animal type'有两种可能
    Choiceschoice_name = 'mammal'choice_name = 'reptile'

  • 班级Book可能有一个ChoicesfromCategory
    category_name = 'Genre'分配。但是,Choicesrelated to
    category_name = 'Animal type'不能分配给 class Book

    类比地,类Animal只能有Choices相关的
    category_name = 'Animal type'分配给它。

换句话说,在班级实例的管理面板中,Book我希望有一种方法可以ChoiceCategories适合Book班级的对象中选择对象。

我想这样做的原因是,使用 Django 管理界面的用户可以将可能的类别动态添加到所选模型(例如,Category category_name = "Conservation status"为 class添加choosable Animal),如果需要,向 Categories 添加更多选项(例如,添加另一个choice_name = 'fish'category_name = 'Animal type'。这种方式非常灵活对于最终管理员用户,无需更改代码中的任何内容。

我试图与通用的关系实现它-但是,它并不成功,因为据我所知一般的关系纽带给予对象(例如Category)到对象的实例任何其他类的,一般不以任何其他类(所以,使用时一般关系,为Category我必须指定与给定Book对象实例的关系,而不是Book一般的类)。

我想知道这样的行动是否可行 - 我搜索了很多但找不到任何东西。也许有更简单的方法?先感谢您!

以上是在Django管理界面中设置与所选模型类的关系的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>