@Classsik
У меня есть три модели, модель заказа Order, модель корзины Cart и модель продукта корзины CartProduct. Мне нужно получить в админке заказа все продукты которые в нем есть. Первая проблема была с ForeignKey которую я решил с помощью ReverseModelAdmin, но теперь не могу понять как сделать еще одну вложенность, или же как то соединить модель CartProduct и Order напрямую. Заранее спасибо за ответ!
class Order(models.Model):
STATUS_NEW = 'new'
STATUS_IN_PROGRESS = 'in_progress'
STATUS_READY = 'is_ready'
STATUS_COMPLETED = 'completed'
BUYING_TYPE_SELF = 'self'
BUYING_TYPE_DELIVERY = 'delivery'
STATUS_CHOICES = (
(STATUS_NEW, 'Новый заказ'),
(STATUS_IN_PROGRESS, 'Заказ в обработке'),
(STATUS_READY, 'Заказ готов'),
(STATUS_COMPLETED, 'Заказ выполнен')
)
BUYING_TYPE_CHOICES = (
(BUYING_TYPE_SELF, 'Самовывоз'),
(BUYING_TYPE_DELIVERY, 'Доставка')
)
customer = models.ForeignKey(Customer, verbose_name="Покупатель", related_name="related_orders", on_delete=models.CASCADE)
first_name = models.CharField(max_length=255, verbose_name="Имя")
last_name = models.CharField(max_length=255, verbose_name="Фамилия")
phone = models.CharField(max_length=20, verbose_name="Телефон")
cart = models.ForeignKey(Cart, verbose_name="Корзина", on_delete=models.CASCADE, null=True, blank=True, related_name="cart")
address = models.CharField(max_length=1024, verbose_name="Адрес", null=True, blank=True)
status = models.CharField(
max_length=100,
verbose_name="Статус заказ",
choices=STATUS_CHOICES,
default=STATUS_NEW
)
buying_type = models.CharField(
max_length=100,
verbose_name="Тип заказа",
choices=BUYING_TYPE_CHOICES,
default=BUYING_TYPE_SELF
)
comment = models.TextField(verbose_name="Комментарий к заказу", null=True, blank=True)
created_at = models.DateTimeField(auto_now=True, verbose_name="Дата создания заказа")
order_date = models.DateField(verbose_name="Дата получения заказа", default=timezone.now)
class Cart(models.Model):
owner = models.ForeignKey('Customer', null=True, verbose_name="Владелец", on_delete=models.CASCADE)
products = models.ManyToManyField(CartProduct, blank=True, related_name="related_cart")
total_products = models.PositiveIntegerField(default=0)
final_price = models.DecimalField(max_digits=9, default=0, decimal_places=2, verbose_name="Общая цена")
in_order = models.BooleanField(default=False)
for_anonymous_user = models.BooleanField(default=False)
class CartProduct(models.Model):
user = models.ForeignKey('Customer', verbose_name="Покупатель", on_delete=models.CASCADE)
cart = models.ForeignKey('Cart', verbose_name="Корзина", on_delete=models.CASCADE, related_name="related_products")
product = models.ForeignKey(Product, verbose_name="Товар", on_delete=models.CASCADE)
qty = models.PositiveIntegerField(default=1)
final_price = models.DecimalField(max_digits=9, decimal_places=2, verbose_name="Общая цена")
Решения вопроса 0
Ответы на вопрос 0
