Не удалось создать экземпляр продавца с помощью сигналов 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
.