Я создаю django сайт, который включает в себя элементарную систему инвентаризации. К ним относятся следующие модели
class Stock(models.Model):
# Fields
location = models.ForeignKey(Location)
product = models.ForeignKey(Product)
quantity = models.IntegerField()
class Transfer(models.Model):
# Fields
location1 = models.ForeignKey(Location, related_name='location1')
location2 = models.ForeignKey(Location, related_name='location2')
date_transferred = models.DateField(default=timezone.now)
class TransferLine(models.Model):
# Choice set
direction_set = (
('1TO2', 'From 1 to 2'),
('2TO1', 'From 2 to 1')
)
# Fields
transfer = models.ForeignKey(Transfer, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
quantity = models.IntegerField()
transfer_direction = models.CharField(max_length=4, choices=direction_set, default='1TO2')
Когда я создаю новый перевод, я хочу иметь возможность автоматически вычитать и добавлять товар в TransferLine из количеств в модели Stock.
I Я выяснил, как переопределить метод save_model в файле admin.py для класса TransferAdmin, но я не могу понять, как получить доступ к модели Stock из класса SaleAdmin.
Можно ли это сделать в админке? Должен ли я создать свою собственную форму? Я действительно хотел сделать это из админа, потому что inlinetabular действительно легко сделать в админке по сравнению с пользовательской формой. (По крайней мере, из того, что я могу найти.)
Любая помощь по этому вопросу будет принята.
Чтобы прояснить ситуацию, допустим, что в моей базе данных есть следующие данные для Stock:
|id |loc_id|prod_id|qty|
|:-:|:----:|:-----:|:-:|
|1 |1 |1 |6 |
|1 |2 |1 |6 |
Затем я заполняю форму для транзакции, которая перенесет 3 продукта 1 из местоположения 1 в местоположение 2. Я хочу обновить таблицу Stock до следующей после сохранения формы транзакции.
|id |loc_id|prod_id|qty|
|:-:|:----:|:-----:|:-:|
|1 |1 |1 |3 |
|1 |2 |1 |9 |
Спасибо, Майкл