代码之家  ›  专栏  ›  技术社区  ›  milan

django模型字段取决于另一个字段的值

  •  1
  • milan  · 技术社区  · 7 年前

    我的应用程序的用例是我将有各种领域填写,其中一个是行业领域,另一个是细分领域的品牌。行业领域就像品牌所属的范畴。所以,如果我选择 industry 作为 Health Care XYZ brand 然后 segment 字段应显示“阿育吠陀”、“牙科诊所”(所有医疗保健相关项目)等项目。基本上,它就像一个子类。

    class Industry(models.Model):
        name = models.CharField(max_length=150, blank=True, null=True)
    
        class Meta:
            verbose_name = 'Industry'
            verbose_name_plural = 'Industries'
    
        def __str__(self):
            return self.name
    
    
    
    class Segment(models.Model):
        industry = models.ForeignKey(Industry, related_name='segment', on_delete=models.CASCADE)
        name = models.CharField(max_length=150, blank=True, null=True)
    
        class Meta:
            verbose_name = 'Segment'
            verbose_name_plural = 'Segments'
    
        def __str__(self):
            return f'{self.industry.name} - {self.name}'
    
    
    class BusinessModel(models):
        industry = models.ForeignKey(Industry, blank=False, null=False, related_name='industry', on_delete=models.CASCADE)
        # segements = models.ForeignKey()
        total_investment = models.CharField() # will be choice field
    

    这是一个简单的模型,我没有创建段模型,因为我不知道如何处理这个问题。我只是好奇地想知道,如果是这样的话,我需要一些特别的东西吗 models.py 或者在视野里。这样的事情在开发阶段就出现了,所以,我想弄清楚django的问题解决模式。

    更新

    https://www.franchisebazar.com/franchisor-registration 在这里,如果您选择业务模型部分中的行业,则该部分将相应地更新。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Harry Moreno    7 年前

    你可以有一个3模型的设计像

    class Industry(models.Model):
        name = models.CharField(max_length=150, blank=True, null=True)
    
    class Segment(models.Model):
        name = models.CharField(max_length=150, blank=True, null=True)
    
    class Mapping(models.Model):
         industry = models.ForeignKey(Industry)
         segment = models.ForeignKey(Segment)
    
        2
  •  0
  •   iamatalay    7 年前

    您需要定义模型之间的关系。你可以找到关于许多关系的文档 here 这对你来说是合适的。