Я запустил свой проект Django и хочу поделиться данными между двумя классами. Я не уверен, правильно ли я это делаю. Это работает, но я не хочу вносить в мой проект плохие практики. Мой код выглядит следующим образом:
class Products(models.Model):
name = models.CharField(max_length=50)
protein = models.FloatField()
carbohydrates = models.FloatField()
fat = models.FloatField()
food_type = models.CharField(max_length=6, choices=(
("1", "Meat"),
("2", "Fruit")
)
)
class Meals(models.Model):#Child
name = models.CharField(max_length=50)
ingredient = models.ManyToManyField(Products)
def protein(self):
protein = 0
for ing in self.ingredient.all():
protein += ing.protein
return protein
@property
def carbohydrates(self):
carbohydrates = 0
for ing in self.ingredient.all():
carbohydrates += ing.carbohydrates
return carbohydrates
def diet_category(self):
diet_types = "vegan, vegeterian, Keto, Paleo, Gluten-free"
food_types = ""
for ing in self.ingredient.all():
food_types += ing.food_type
if "1" in food_types:
diet_types.replace("vegan, ", "").replace(" vegeterian,", "")
return (diet_types + " | " + food_types)
Кроме того, у меня проблема с функцией .replace () в python, которую я хочу использовать здесь, чтобы исключить некоторые слова из переменной.
Подводя итог моим вопросам:
-Получение свойств из другого класса осуществляется путем ссылки на объект этого класса. В этом случае Products.objects.all ()
-Как я могу удалить слова из переменной в моделях.
-Можно ли использовать @property для функций, которые возвращают значения из другого класса?