django - 如何从一个模型访问值并传递给 Django 中的另一个模型?
问题描述
我有一个模型称为权重(由用户输入/选择填充),另一个模型称为企业。
class Weight(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="weights")
weight_of_history = models.IntegerField(null=True, blank=True)
class Enterprise(models.Model):
...
重量被保存,每个用户一个,每次用户选择新的时都会更换。
在 Enterprise 类中,我正在创建一个属性,该属性必须从 Weight 类中获取“weight_of_history”(取决于选择权重的用户),但模型之间没有外键或相关名称。
class Enterprise(models.Model):
...
@property
def ranking(self):
weight_of_history = <-- HERE I NEED TO TAKE WEIGHT_HISTORY FROM THE FIRST MODEL
THEN I COULD CALCULATE
我怎么能那样做?谢谢!
解决方案
您可以使用 django 强大的查询功能并从数据库中获取所需的对象。以下是可能对您有所帮助的文档。Django 文档很棒,所以我建议您阅读查询、模型和表单,以便更轻松地完成项目。
对于您的示例,我们可以通过按用户过滤权重来在一个查询中获取用户的所有权重。事实上,django ORM 允许链接过滤器,您可以创建非常复杂的查询
class Enterprise(models.Model):
...
@property
def ranking(self):
weight_of_history = Weight.objects.filter(user=some_user)
如果您事先不知道用户,那么您可以在视图内部执行并获取发出请求的用户并使用此用户进行过滤:
#views.py
user_making_request = request.user
weight_of_history = Weight.objects.filter(user=user_making_request)
推荐阅读
- java - 与包含不同比例的表达式的度量距离计算器
- spring - 为什么包对 Spring RESTful 控制器类很重要
- html - 如何使用 html/css 对齐聊天气泡段落?
- html - HTML 导航列表将多个项目显示为选中状态
- string - Ocaml - 检查,给定一个转换列表,单词被识别
- r - 如何在 r 包中包含数据集?
- html - 两个 div 并排(一个是固定位置)
- c++ - 序列化/反序列化多个继承的 Trivially Copiable C++ 结构
- python - 如何从范围生成器中打印出不能被给定列表中的任何数字整除的数字
- python-3.x - 使用 Pandas CSV 在表格中呈现这些数据的最佳方式