python - 有没有办法在运行时为模型的相关字段动态选择一个值?
问题描述
我想实现一个功能,我需要选择一个 django 模型(例如从下拉列表中),选择一个后,该模型的所有对象都会显示出来。
class Thread(models.Model):
sender = models.(???) # This need to be a field that can store a different model on a run time.
receiver = models.(???) # same here.
有什么方法可以让我动态地首先选择模型,然后选择该列表中的一个对象。我已经在 odoo 中看到了这个功能。但是 Django 中有什么东西吗?
解决方案
您可以使用多对多字段以及来自另一个模型的“学生”和“教师”的多个可用选项。
class UserRole(models.Model):
STUDENT = 'STUDENT'
TEACHER = 'TEACHER'
ROLE_CHOICES = (
(STUDENT, 'student'),
(TEACHER, 'teacher'),
)
role_name = models.CharField(max_length=255, choices=ROLE_CHOICES)
def __str__(self):
return "{}".format(self.role_name)
class User(AbstractUser):
username = models.CharField(max_length=50, unique=True)
email = models.EmailField(_('email address'))
role = models.ManyToManyField(UserRole)
Class Thread(models.Model):
sender = models.OneToOneField(User, on_delete=models.CASCADE)
receiver = models.OneToOneField(User, on_delete=models.CASCADE)
这样,您只能将可用角色放在 Thread 的发送者和接收者字段中。
推荐阅读
- python - 在什么情况下需要像 python-opencv 中的 reshape(-1,1,2) 一样重塑点?
- css - 本地 Wordpress 站点呈现 css 与本地 Web 服务器不同
- rest - REST API - 命名端点的逻辑方法
- asp.net - C# 用户名由于其保护级别而无法访问
- javascript - 隐藏在视口外的传单 geoJson 层
- amazon-web-services - 使用 sam cli 开发 AWS 无服务器 Express 应用程序时出错
- javascript - 在Javascript中合并两个数组以形成新数据
- asp.net - 从文件目录访问文件时出现错误“设备未准备好”
- python - 将 pandas 中的 groupby() 拆分为更小的组并将它们组合起来
- postgresql - 为什么 PostgreSQL 不完全使用共享缓冲区