我的愿望是在一个django管理面板创建窗口中创建多个对象。你看:
class ExampleModel(models.Model)
field1 = models.CharField()
field2 = models.CharField()
field3 = models.CharField()
date = models.DateField()
字符串
在这种情况下,最重要的部分是日期,我经常在管理面板中创建对象,其中前3个字段是相同的(在创建时),只有日期必须是唯一的。所以我想集成一些小部件,我可以选择我需要的所有日期,并通过点击提交按钮创建对象的数量。
我找到了一个名为django-bulk-admin的包,可以解决我的任务。但Django 3不支持。ChatGPT还建议我在Admin类定义中创建一些操作,但它不起作用。我想解决的办法是重新定义这个模型的AdminForm的动作,但是我不知道怎么做?
**更新。**这是我目前正在设计的实际模型(简化版)。管理员使用admin-panel添加课程。想象一下,一些组#1,在1个学期(学期=60天)将有课每周三天。大约有25节课。**每个课程必须是单独的对象。**这25个课程作为对象几乎是相等的,只有日期是唯一的。这就是为什么我尝试一次添加许多对象,选择多个日期。这些对象(课程)在未来将具有关于课程状态的唯一信息和其他附加信息,但在创建时,它们仅在日期上不同。
class Lesson(models.Model):
study_group = models.ForeignKey(StudyGroup, on_delete=models.CASCADE)
semester = models.CharField(choices=SEMESTER_CHOICES)
date = models.DateField()
status = models.CharField(default='the lesson was not held')
reason_for_not_held = models.TextField(default = 'lesson not started yet..') #if status is 'the lesson wasn't held'
substitute_teacher = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, null=True, blank=True) #if status is 'the lesson has been transferred to another teacher'
型
1条答案
按热度按时间lnxxn5zx1#
如果相同的值经常出现在相同的列中,并且这不是巧合,就像两个人“碰巧”有相同的名字一样,这被称为 * 数据重复 *,数据重复通常是一件坏事:它使数据库更大,但也使数据更不容易管理:例如,如果您输入了错误的
substitute_teacher
,则意味着您需要更新该序列的所有课程。通常,解决方案是创建两个模型,其中第二个模型包含特定于 * 每个示例 * 的数据,而第一个项目的
ForeignKey
包含通用数据。在这里,这意味着:字符串
通常你想批量查看或编辑
ModelAdmin
中的相关项目,Django管理员可以做到这一点:inlines
[Django-doc].事实上,你可以为LessonSequence
使用ModelAdmin
(如果你想为Lesson
模型创建一个,你也可以),另外我们可以在ModelAdmin
forLessonSequence
中为Lesson
s创建**TabularInline
[Django-doc]或StackedInline
**[Django-doc]:型