Python наследование классов и Django модель. ForeignKey - это две совершенно разные вещи. Похоже, вы говорите о последнем.
Поля настолько различны для разных типов продуктов, что вам действительно нужна отдельная модель для каждого из них? Простейшим способом было бы просто иметь одну модель Food для всех типов продуктов питания.
class Food(models.model):
VEGETABLE = 'vegetable'
MEAT = 'meat'
FRUIT = 'fruit'
TYPE_CHOICES = [
(VEGETABLE, 'vegetable'),
(MEAT, 'meat'),
(FRUIT, 'fruit'),
]
type = models.CharField(max_length=10, choices=TYPE_CHOICES)
nutrition_content = models.OneToOneField('NutritionContent', on_delete=models.CASCADE)
# additional fields
class NutritionContent(models.Model):
# additional fields
Если ваши поля так различаются между типами продуктов питания, что вам нужно иметь разные модели для каждого из них, вы можете настроить Food в качестве родительской модели, с которой все модели типа детского питания имеют отношение OneToOneField. Тогда модель NutritionContent все еще может связываться с Food.
class Food(models.model):
nutrition_content = models.OneToOneField('NutritionContent', on_delete=models.CASCADE)
# fields that apply to all foods
class Vegetable(models.Model):
food = models.OneToOneField('Food', on_delete=models.CASCADE)
# additional fields that only apply to vegetables
class Meat(models.Model):
food = models.OneToOneField('Food', on_delete=models.CASCADE)
# additional fields that only apply to meat
class Fruit(models.Model):
food = models.OneToOneField('Food', on_delete=models.CASCADE)
# additional fields that only apply to fruit
class NutritionContent(models.Model):
# additional fields