Как обновить связанные поля модели в Django - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть две модели (покупка и склад), я хочу, чтобы при покупке товара поле количества на складе было обновлено. (например, у меня есть 2 манго в наличии, и я покупаю 3 монго, я хочу, чтобы обновленный запас был 5 манго)

Мои модели

class Stock(models.Model):
    product = models.ForeignKey(Products, null=True, blank=True, on_delete = models.SET_NULL)
    stock_date = models.DateField(null=True, blank=True)
    quantity = models.DecimalField(max_digits = 10, decimal_places = 2, blank=True)
    buying_price = models.DecimalField(max_digits = 10, decimal_places = 2, blank=True)

class Purchase(models.Model):
    product = models.ForeignKey(Stock, null=True, blank=True, on_delete = models.SET_NULL)
    order_date = models.DateField(null=True, blank=True)
    quantity = models.DecimalField(max_digits = 10, decimal_places = 2, blank=True)
    buying_price = models.DecimalField(max_digits = 10, decimal_places = 2, blank=True)

Может кто-нибудь помочь, пожалуйста!

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Вы должны использовать Django Сигналы.

из django .db.models.signals import post_save

def update_stock(sender, instance, **kwargs):
    product = instance.product.id    
    stock = Stock.objects.get(product=product.id)
    stock.quantity = stock.quantity + instance.quantity

post_save.connect(update_stock, sender=Purchase)

Вы можете добавить исключения в соответствии с вашими потребностями.

0 голосов
/ 13 апреля 2020

Вы можете обращаться к Django моделям, как к любой переменной

 CurrentPurchase.stock.quantity = 5

, или вы можете использовать фильтр, чтобы получить нужный объект:

Model.objects.filter(AnotherModel=Model_)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...