python - Django 模型 - 当用户选择选项时如何添加子类型选项?
问题描述
我正在做一个项目,他们有各种工作类型,我已经用 CHOICES 解决了这些工作类型,但是,我想为选择工作类型 1 时添加条件,SUBTYPES xy 成为选择。我对如何执行此操作的语法有疑问。我在下面包含了我的伪代码......我感谢任何帮助!
from django.db import models
class User(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Job(models.Model):
name = models.CharField(max_length=255)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='jobs')
JOB_CHOICES = (
('carpentry', 'Carpentry'),
('cleaning', 'Cleaning'),
('electrician', 'Electrician'),
('handyman', 'Handyman'),
('hvac', 'HVAC'),
('painting', 'Painting'),
('pest', 'Pest'),
('plumbing', 'Plumbing'),
('roofing', 'Roofing'),
('property', 'Property'),
)
jobType = models.CharField(max_length=30, choices=JOB_CHOICES, default='handyman')
# If JobType = Carpentry:
# CARPENTRY_CHOICES = (
# ('trim', 'trim')
# ('sheetrock', 'Sheetrock')
# ('windows', 'Windows')
# ('doors', 'Doors')
# ('cabinets and shelving', 'Cabinets and Shelving')
# ('other', 'Other')
# )
# jobType = models.CharField(max_length=30, choices=CARPENTRY_CHOICES, default='other')
def __str__(self):
return self.name
解决方案
我可能会选择一个 job_type 模型,它有一个名称和一个“子类型”字段。
class JobType(models.Model):
SubTypeChoices = (...)
name = models.CharField()
subtype = models.CharField(choices=SubTypeChoices, ...)
class Job(models.Model):
....
job_type = models.ForeignKey(JobType, ...)
....
这样,您可以将您的“子类型”与一个 job_type 相关联。如果由于某种原因您可以为一个 Job 设置多个 job_types,请使用 ManyToMany 字段。
推荐阅读
- sql-server - 我在使用 Month(EndofMonth) = 08 和 Month (EndOfMonth) = 09 的两个特定月份之间使用 Case When Statement 派生记录时出错?
- typescript - 如何将 TypeScript 中的 Enum 转换为返回 keyof typeof Enum 的数组?
- python - 如何在另一个数据框的基础上过滤一个数据框
- javascript - 使用 addEventListener 调用类函数
- javascript - JavaScript 中的“类字段”是什么?
- python-3.x - KeyError:“[索引(...')]中没有一个在[列]中”
- ruby - 当我指定“chromedriver”时,为什么水豚正在寻找“Mozilla geckodriver”?
- css - 使用 :after 和 :before 时获取空格
- assembly - 如何在 nasm 操作系统中填充屏幕
- sql-server - 在 SQL Server syspolicy_purge_history 作业中,第 3 步失败