【问题标题】:Django queryset custom propertiesDjango 查询集自定义属性
【发布时间】:2011-11-29 11:18:19
【问题描述】:

我有类似的用户个人资料

类 UserProfile(models.Model):

    completed_tasks = models.ManyToManyField(Tasks)

然后是任务模型

类任务(models.Model):

    <...fields...>

然后我想过滤一些任务并有一个查询集属性“已完成”,它标记任务对象是否在用户完成任务中。

示例

t = Tasks.objects.filter(...).order_by(...)

t[0].completed # 错误

t[1].completed # 真

任何想法我该怎么做?

【问题讨论】:

  • 在名为 completedTasks 模型上仅使用 models.BooleanField 有什么问题?
  • 我有很多用户和很多任务。每个用户可以完成每个任务一次。
  • 尝试使用ManyToManyFieldintermediate/through table。这允许您将额外数据与每个唯一对关联(user, task)

标签: django model properties


【解决方案1】:

棘手的问题:在您的模型中,任务的完成取决于用户在他的收藏中是否有它,这使得逻辑模棱两可。如果有用户完成,任务是否完成?也许所有用户都需要完成它?或者答案可能取决于用户的提问?尝试使您的模型更加明确。

【讨论】:

  • 每个用户可以完成一次任务。如果一个用户完成了它,这并不意味着该任务已经完成。
  • 假设数据库中有 n 个任务。完成的每项任务都会给用户一定数量的积分。当用户完成一项任务时,他无法再次提交答案,因此我需要跟踪用户已经独立完成的任务。
  • 看看sye评论。通过看起来像您需要的东西:基本上将您的连接表提升为适当的模型。
猜你喜欢
  • 2021-05-22
  • 1970-01-01
  • 2022-12-04
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 2016-08-28
相关资源
最近更新 更多