django - 从 django 管理表单插入时如何从另一列设置列的值
问题描述
我有存货表格,它有两列表示存货价值:当前存货,第一次插入时存货,当前存货和存货应该相同,但是,当借书时,当前存货应该减少, stock 列将是第一个值:例如: book1 有 stock 5 和 current stock 5,有人借了 book1,所以 book1 有 stock 5 和 current stock 4,
我不想从数据库触发器中执行此操作,因为我的应用程序是独立于数据库的。
请帮助我如何从 django 管理表单中做到这一点?
模型.py:
class BooksCopy(models.Model):
book = models.ForeignKey(Book, on_delete=models.PROTECT)
branch = models.ForeignKey(Branch, on_delete=models.PROTECT)
no_of_copies = models.IntegerField('Stock')
current_no_of_copies = models.IntegerField('Current Stock')
管理员.py:
class BooksCopiesAdmin(admin.ModelAdmin):
models.BooksCopy.current_no_of_copies = models.BooksCopy.no_of_copies
exclude = ('current_no_of_copies',)
list_display = ('branch', 'book', 'no_of_copies', 'current_no_of_copies',)
解决方案
我想你有一些班级持有借来的书以及由哪个用户。就像是
class BorrowedBooks(models.Model)
user = models.ForeignKey(User, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
你现在可以
class BooksCopy(models.Model):
book = models.ForeignKey(Book, on_delete=models.PROTECT)
branch = models.ForeignKey(Branch, on_delete=models.PROTECT)
no_of_copies = models.IntegerField('Stock')
@property
def current_no_of_copies (self):
return self.no_of_copies - self.borrowedbooks_set.all()
推荐阅读
- r - 一列的一部分是否存在于另一列中?R
- ios - 是否可以使用 SCNAudioPlayer() 进行音频电平测量
- python - 如何在python中找到小说中所需的单词?
- javascript - ExtJS Classic:为窗口的 x/y/width/height 设置动画时,标题未在指定的最终位置结束
- java - 在导航栏中更改片段时进度消失
- python - sklearn knn分类器的pred()函数可以将scipy稀疏矩阵作为输入吗?
- spring - SpringBoot ReloadableResourceBundleMessageSource 找不到属性文件
- python - 如何在 Docker 中保留 dotenv 机密?
- reactjs - React fetch API 与图表中的实时数据
- python - Spoitpy 当前播放