【发布时间】:2020-01-31 20:57:57
【问题描述】:
在我的 DeleteView 模板中,我想警告用户删除当前对象将删除以下对象(因为 db 架构需要 on_delete = models.CASCADE)。
这是一个示例模型:
class Book(models.Model):
course = models.ForeignKey(Course, related_name = 'course_books', on_delete = models.CASCADE, null = True, blank = True)
class Exercise(models.Model):
book = models.ForeignKey(Book, related_name = 'exercises', on_delete = models.CASCADE, null = True, blank = True)
...
class Solution(models.Model):
exercise = models.ForeignKey(Exercise, related_name = 'solutions', on_delete = models.CASCADE, null = True, blank = True)
因此,假设用户想要删除一门课程,我想警告用户在删除当前书籍时将删除哪些书籍、练习和解决方案。大意是这样的:
WARNING: Deleting course Programming 101 will delete Python Programming for Beginners and Python By Example. It will also delete Excersises 1-5 and solutions 1-10
这将要求我可以查看相关字段以查看 on_delete 是否设置为 CASCADE。如果是,我应该将它添加到 to_be_deleted 对象列表中。
我已经查看了是否可以检查该字段的 on_delete 属性:
for related_object in the_course._meta.related_objects:
dir(related_object.field)
但没有任何帮助,所以我在这里伸出援手......
【问题讨论】:
标签: django django-models