Django模型-当用户选择选择时,如何添加子类型选择?

时间:2018-12-11 17:28:43

标签: python django model

我正在一个项目中,这些项目具有我用CHOICES处理过的各种工作类型,但是,当选择了工作类型1时,我想添加条件,子类型x-y成为选择。我在语法上遇到了麻烦。我在下面包含了我的伪代码...感谢您的帮助!

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 Models

Django Serializer

/api editor

1 个答案:

答案 0 :(得分:0)

我可能会选择一个job_type模型,该模型具有一个名称和一个“ subtype”字段。

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_type,请使用ManyToMany字段。