Как автоматически заполнить таблицу в моей базе данных данными, добавленными в другую таблицу?

В настоящее время я разрабатываю приложение для управления, и я достиг уровня, на котором я должен убедиться, что одна из моих таблиц, а именно таблица запасов, должна автоматически заполняться данными из таблиц местоположения и артикула.
Другими словами, запасы создаются, когда есть местоположение и созданный продукт.
Я пытался использовать сигналы, как в документации, но это не работает.
Помогите мне, пожалуйста.

models.py

class Location(models.Model):
    
    class CHOICES(models.TextChoices):
        FOURNISSEUR = 'Fr', 'Fournisseur'
        VEHICULE = 'Vl', 'Véhicule'
        DEPOT = 'Dt', 'Dêpot'

    location = models.CharField(max_length=255, choices=CHOICES.choices)
    name = models.CharField(max_length=255, verbose_name="Location Name", unique=True)
    provider = models.ForeignKey(Provider, on_delete=models.CASCADE, null=True, blank=True)
    depot = models.ForeignKey(Depot, on_delete=models.CASCADE, null=True, blank=True)
    vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE, null=True, blank=True)
    
    def __str__(self):
        return self.name
class Stock(TimeStampBaseModel):

    location = models.ForeignKey(Location, on_delete=models.CASCADE)
    product = models.ForeignKey(Article, on_delete=models.CASCADE)
    qty_stock = models.FloatField(verbose_name="Quantity Purchase", db_index=True, default=0)
    
    def __str__(self):
        return self.stock_name
    
    class Meta:
        constraints = [
            UniqueConstraint(name='unique_storage', fields=['id', 'location', 'product'])           
        ]

signals.py

from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Location, Stock
from article.models import Article


@receiver(post_save, sender=Location)
def create_stock(sender, instance, created, **kwargs):
    if created:
        attrs_needed= ['location', 'product', 'qty_stock']
        Stock.objects.create(location=instance.location, product = instance.product, qty_stock=instance.qty_stock)

post_save.connect(create_stock, sender=Location, weak=False)
Вернуться на верх