【发布时间】:2018-08-14 17:39:23
【问题描述】:
如果之前有人问过这个问题,但我找不到我的具体用例得到解答,我深表歉意。
我有一个显示基本产品信息的表格。价格、销售数量和卖家数量等产品详细信息会定期抓取并存储在单独的数据库表中。现在我想使用tables2在前端的一个表中显示基本产品信息和抓取的详细信息。为此,我在我的 Product 模型中编写了一个函数来获取最新的详细信息并将它们作为字典返回,这样我就可以使用单个 Accessor 调用。
# models.py
class Product(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=256)
brand = models.ForeignKey(Brand)
category = models.CharField(max_length=128, choices=CATEGORY_CHOICES)
def __unicode__(self):
return self.name
def currentState(self):
currentDetailState = ProductDetailsState.objects.filter(
product=self
).latest('created_at')
# return current details as a dictionary
return {
price: currentDetailState.price,
num_sellers: currentDetailState.num_sellers,
num_sales: currentDetailState.num_sales
}
class ProductDetailsState(models.Model):
product = models.ForeignKey(Product)
created_at = models.DateTimeField(auto_now_add=True)
price = models.DecimalField(max_digits=6, decimal_places=2, null=True)
num_sellers = models.IntegerField(null=True)
num_sales = models.IntegerField(null=True)
def __unicode__(self):
return self.created_at
# tables.py
class ProductTable(tables.Table):
productBrand = tables.Column(
accessor=Accessor('brand.name'),
verbose_name='Brand'
)
currentRank = tables.Column(
accessor=Accessor('currentRank')
)
class Meta:
model = Product
...
我现在如何使用这个返回的字典并将其拆分为我的 Product 表中的列?除了我的做法之外,还有其他方法可以使用访问器吗?
【问题讨论】:
标签: python django django-models django-tables2