python - 在 django 模型中,提供一组默认字段,但也允许用户添加自己的字段
问题描述
我知道,这不是最具描述性的标题,但我的问题可以用一个例子更好地说明。
假设我正在制作一个应用程序,允许学生司机记录他们的驾驶时间。他们需要记录白天和晚上的时间,所以我默认提供这两个字段。但是,为了争论,一个好奇的少年决定他也想跟踪他在雷暴中开车时所花的时间。另一个人决定他想跟踪他在雪地里开车的时间。使用 Django 实现这一点的最佳方法是什么?
这是我现在的想法的粗略概述。假设这是在models.py
:
class Trip(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
date = models.DateField()
class DrivingTime(models.Model):
trip = models.ForeignKey(Trip, on_delete=models.CASCADE)
tag = models.ForeignKey(AcceptableTimeType, on_delete=models.CASCADE)
hours = models.TimeField()
class AcceptableTimeType(models.Model):
name = models.CharField(max_length=50)
# null/blank if visible for everyone
# otherwise, should link to the user that wants this specific type of time tracked
user = models.ForeignKey(User, on_delete=CASCADE, blank=True, null=True)
我在 Django 管理员中预先设置了默认时间类型列表(在本例中为白天/夜晚),并将用户字段留空。然后用户可以添加他们想要的任何类型的时间(例如下雨或下雪)。然后,当我创建用户可以填写的那些时间字段的列表时,我选择AcceptableTypeTime
链接到当前字段或为空的项目子集。
看起来这应该可行,但我也觉得应该有一个我可能完全不知道的通用解决方案来解决这个问题。任何指向正确方向的指针将不胜感激!
解决方案
推荐阅读
- swift - 快速减少标题和表格视图单元格之间的空间
- python-3.x - AWS Textract 无法识别 PDF 文档第二页的表格
- python - 如何根据条件从查询集中删除项目,然后在 django 中作为 json 响应返回
- javascript - 在 Angular 中实现 Gridstack 3
- flutter - 该函数的返回类型为 'FutureOr
',但不以 return 语句结尾 - java - 我的 ActionPerformed 中的线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常
- spring-boot - 没有控制器时的Springboot异常处理
- laravel - Shopify Embedded App 安装时出现“此地址没有页面”错误
- function - 在最新版本的android studio中创建函数时出现问题
- email - 谷歌表格应用程序脚本,如何格式化保存到谷歌驱动器的 pdf?