我是Django的新手,感谢任何帮助,如何根据前一个字段限制一个字段中的选项。例如,如果我为动物选择'狗',我想从FOOD_CHOICE中删除'巧克力',因为我爱狗。谢谢!!!
ANIMAL_CHOICE = (
('a','cat'),
('b','dog'),
('c','fish'),
)
FOOD_CHOICE = (
('a', 'chocolate'),
('b', 'kittySnack'),
('c', 'steak'),
)
class Animal(models.Model):
animal = models.CharField(max_length=1, choices= ANIMAL_CHOICE)
food = models.CharField(max_length=1, choices= FOOD_CHOICE)
答案 0 :(得分:0)
你将从django表单中删除表单,或者你也可以通过javascript操作从前端删除该选项
答案 1 :(得分:0)
除非你写了一套规则,否则你不能这样做,这很难维护 这里最好的解决方案是使用单独的食物模型,并将外键添加到动物模型中:
ANIMAL_CHOICE = (
('a','cat'),
('b','dog'),
('c','fish'),
)
FOOD_CHOICE = (
('a', 'chocolate'),
('b', 'kittySnack'),
('c', 'steak'),
)
class Animal(models.Model):
animal = models.CharField(max_length=1, choices= ANIMAL_CHOICE)
foods = models.ManyToManyField(Food)
class Food(models.Model):
food = models.CharField(max_length=1, choices= FOOD_CHOICE)
另一方面,您应该保证每个动物入口都是唯一的,每个食物记录都是相同的。这样可以避免重复 现在,在这里使用选项,限制解决方案并使其硬编码,如果您想要包含新动物或新食物,则需要更改代码。
建议
class Animal(models.Model):
name = models.CharField(max_length=50, unique=True)
description = models.TextField()
foods = models.ManyToManyField(Food)
class Food(models.Model):
name = models.CharField(max_length=50, unique=True)
description = models.TextField()