首页 > 解决方案 > 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

Django 模型

Django 序列化器

/api 编辑器

标签: pythondjangomodel

解决方案


我可能会选择一个 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 字段。


推荐阅读