Неправильное наследование объектов в приложении django python
У меня есть модель MenuIngredientConsumption, которая наследуется от MenuOfferOptionModificationThrough.
class MenuOfferOptionModificationThrough(models.Model) :
'content of offer'
menu_offer_option_modification = models.ForeignKey(MenuOfferOptionModification, on_delete=models.CASCADE)
storage_position = models.ForeignKey(StoragePosition, on_delete=models.CASCADE)
quantity = models.DecimalField(max_digits=20, decimal_places=2, null=True)
ingredient_name = models.CharField(
max_length=200,
validators=[MinLengthValidator(2, "Title must be greater than 2 characters")]
)
class MenuIngredientConsumption(MenuOfferOptionModificationThrough) :
created_at = models.DateTimeField(auto_now_add=True)
У меня есть 2 созданных объекта MenuOfferOptionModificationThrough.
MenuOfferOptionModificationThrough(..., ingredient_name="potato")
MenuOfferOptionModificationThrough(..., ingredient_name="tomato")
Так вот, я хочу скопировать эти 2 объекта MenuOfferOptionModificationThrough в MenuIngredientConsumption. И я написал код в view.py:
def post(self, request, **kwargs):
gastronomy = get_object_or_404(Gastronomy, id=self.kwargs['gastronomy_pk'])
order_modification_through = get_object_or_404(OrderModificationThrough, id=self.kwargs['order_modification_pk'])
menu_offer_option_modification = order_modification_through.menu_offer_option_modification
quantity = order_modification_through.quantity
menu_offer_option_modification_through_list = MenuOfferOptionModificationThrough.objects.filter(menu_offer_option_modification=menu_offer_option_modification)
if menu_offer_option_modification_through_list:
for i in range(quantity):
for ingredient in menu_offer_option_modification_through_list:
menu_ingredient_consumption = MenuIngredientConsumption(
menu_offer_option_modification = ingredient.menu_offer_option_modification,
storage_position = ingredient.storage_position,
quantity = ingredient.quantity,
ingredient_name = ingredient.ingredient_name,
)
menu_ingredient_consumption.save()
Да, я копирую 2 объекта в MenuIngredientConsumption, но также у меня есть 6 объектов MenuOfferOptionModificationThrough. А должно быть 2 (я с ним не работал). Я не понимаю, почему так происходит. Пожалуйста, помогите.
Ну, модель, которую я построил, была неверной. Мне не нужно было наследовать модель. Мне нужно было просто скопировать ее, и тогда все пойдет хорошо:
class MenuOfferOptionModificationThrough(models.Model) :
'content of offer'
menu_offer_option_modification = models.ForeignKey(MenuOfferOptionModification, on_delete=models.CASCADE)
storage_position = models.ForeignKey(StoragePosition, on_delete=models.CASCADE)
quantity = models.DecimalField(max_digits=20, decimal_places=2, null=True)
ingredient_name = models.CharField(
max_length=200,
validators=[MinLengthValidator(2, "Title must be greater than 2 characters")]
)
class MenuIngredientConsumption(models.Model) :
menu_offer_option_modification = models.ForeignKey(MenuOfferOptionModification, on_delete=models.CASCADE,)
storage_position = models.ForeignKey(StoragePosition, on_delete=models.CASCADE,)
quantity = models.DecimalField(max_digits=20, decimal_places=2,)
ingredient_name = models.CharField(
max_length=200,
validators=[MinLengthValidator(2, "Title must be greater than 2 characters")],
)
created_at = models.DateTimeField(auto_now_add=True)