【发布时间】:2018-07-02 10:49:21
【问题描述】:
我对 Django(Python 也是)很陌生,并且通过实践来学习它。
我正在使用 Django 管理站点。我创建了两个模型并在管理员中成功注册。 list_display 中给出的字段的数据很好地显示。
我想要一个管理中的另一个表,它通过一些逻辑处理来显示两个表中的数据。
要根据前两个模型数据获取另一个表,我可以创建一个新模型,该模型仅使用 question 中提到的方法。
现在的问题是,如何从其他模型表中获取数据以及如何返回,以便在admin的表中显示。
这是我的models.py:
from django.db import models
class GoodsItem(models.Model):
name = models.CharField(max_length=255)
size = models.DecimalField(max_digits=4, decimal_places=2)
INCHES = 'IN'
NUMBER = 'NUM'
GOODS_ITEM_SIZE_UNITS = (
(INCHES, 'Inches'),
(NUMBER, '#'),
)
size_unit = models.CharField(
max_length=4,
choices=GOODS_ITEM_SIZE_UNITS,
default=INCHES,
)
def __str__(self):
if(self.size_unit == self.NUMBER):
return "%s #%s" % (self.name, (self.size).normalize())
else:
return "%s %s\"" % (self.name, (self.size).normalize())
class FinishedGoodsItem(models.Model):
date = models.DateField()
goods_item = models.ForeignKey(GoodsItem, on_delete=models.CASCADE, related_name="finished_name")
weight = models.DecimalField(max_digits=6, decimal_places=3)
def __str__(self):
return str(self.goods_item)
class SoldGoodsItem(models.Model):
goods_item = models.ForeignKey(GoodsItem, on_delete=models.CASCADE, related_name="sold_name")
date = models.DateField()
weight = models.DecimalField(max_digits=6, decimal_places=3)
def __str__(self):
return self.goods_item
admin 中的第三个表应该显示如下数据:
===============================
GoodsItem | Stock Available
===============================
这里的 GoodsItem 是 GoodsItem 模型的字符串表示,可用的库存应该计算为:
直到最后一个条目(即最后输入日期)的特定 GoodsItem 在 FinishedGoodsItem 中的重量总和 - 直到最后一个条目(即最后输入日期)特定 GoodsItem 在 SoldGoodsItem 中的重量总和
如果有好心人告诉我如何查询数据并通过模型中的不同方法返回,我将实现逻辑。如有任何疑问,请随时提出。
【问题讨论】:
-
该链接问题中没有任何内容涉及创建单独的模型。但你不需要;您可以通过
related_name获取 Sold 和 FinishedGoodsItems 的集合。
标签: python django django-models django-admin