python - Django 模型出现次数
问题描述
我对 Django 还很陌生,我的模型需要帮助。
class Region(models.Model):
region_name = models.CharField(max_length=10)
def __str__(self):
return self.region_name
class Property(models.Model):
prop_name = models.CharField(max_length=200)
region_name = models.ForeignKey(Region, on_delete=models.CASCADE, verbose_name="Region")
prop_code = models.IntegerField(default=0, verbose_name="Property")
def __str__(self):
return self.prop_name
class Sale(models.Model):
prop_name = models.ForeignKey(Property, on_delete=models.CASCADE)
employee = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Person")
prop_state = models.CharField(null=True, max_length=5, choices=[('new','New'),('used','Used')])
date = models.DateField('Sale Date')
def __str__(self):
return '%s : %s %s - %s' % (self.prop_name.prop_name, self.employee, self.date, self.prop_state)
这是我的模型。Property 继承自 Region,Sale 继承自 property。我想要做的是计算一个地区的销售数量和特定房产的销售数量。但是,我不知道哪种方法是解决此问题的最佳方法。我尝试使用 lambda 作为使用 count() 函数的模型字段,但我看不到多少成功。如果您有任何建议,请告诉我。
解决方案
如果你已经有你的 Property/Region 对象,这样的东西应该可以工作
sales_per_property = Sale.objects.filter(prop_name=property).count()
sales_per_region = Sale.objects.filter(prop_name__region_name=region).count()
编辑:
看到您尝试将 lambda 函数添加到模型字段,这可能是您正在寻找的更多内容。
class Region(models.Model):
...
@property
def sales(self):
return Sale.objects.filter(prop_name__region_name=self).count()
财产也是如此。只需使用region.sales
推荐阅读
- javascript - 使用 Javascript .sort 函数对包含数字的字符串进行排序
- javascript - 如何在另一个 div jquery 上克隆一个 div
- flask - 在 Flask-SocketIO 房间中向客户端发送特定消息的问题
- flutter - 无法从包含 Firebase PhoneAutherisation 的未来提供商获取数据
- sql - 用填充零替换字符
- java - 为什么Java8流API中整数类型不能自动转换为Double类型?
- python - 在python中修改具有未知字符长度的分隔字符串
- c# - 如何从/向用户删除/添加角色?
- ios - 动画期间的 CPU 效率
- npm - NPM 在尝试发布包时抛出 ENOVERSION