Не удалось создать экземпляр продавца с помощью сигналов django

Я создаю сайт с 2 типами пользователей и все еще новичок в django. И я хочу добавить функциональность для добавления продавца продукта всякий раз, когда продукт продается. Извините, что не смог объяснить это лучше. Вот код models.py:

class Ordered(models.Model):
    products = models.ForeignKey(Products, on_delete = models.SET_NULL, null = True)
    seller = models.ForeignKey(SellerProfile, on_delete = models.SET_NULL, null = True)
    buyer = models.ForeignKey(CustomerProfile, on_delete = models.CASCADE)
    ordered_on = models.DateTimeField(auto_now_add = True)

А это код сигнала:

@receiver(post_save, sender = Ordered)
def new_order_for_seller(sender, instance, created, *args, **kwargs):
    seller = Ordered.seller.sellerprofile
    if created:
        Ordered.objects.create(seller = seller)

Любое предложение или исправление кода будет очень полезно. Спасибо

Вы можете установить атрибут seller в качестве instance.product.seller:

@receiver(pre_save, sender = Ordered)
def new_order_for_seller(sender, instance, created, *args, **kwargs):
    if created and instance.product is not None:
        instance.seller_id = instance.product.seller_id

Мы можем сделать это в сигнале pre_save, чтобы предотвратить сохранение нового объекта Ordered второй раз.

При этом, поскольку продавец уже определен по Product, нет особого смысла дублировать это, поскольку это может привести к несоответствиям, когда Seller позднее меняется Product, а Ordered по-прежнему указывает на "старое" Seller.

Вернуться на верх