下午好,

我正在try 编写一个DRF端点来返回下一个未使用的提示.

我有两个型号:

class GameActivity(models.Model):
    activity_datetime = models.DateTimeField(default=timezone.now)
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='activity_user')
    activity_type = models.ForeignKey(GameActivityType, on_delete=models.CASCADE, null=True, blank=True,related_name='game_activity_type')
    activity_hint = models.ForeignKey(Hint, on_delete=models.CASCADE, null=True, blank=True)

class Hint(models.Model):
    hint_title = models.CharField(max_length=50)
    hint_detail = models.CharField(max_length=300)
    hint_level = models.IntegerField()
    chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE, null=True, blank=True, related_name="chapter_hint")
    pts_cost = models.IntegerField()

我try 做的是为传入的章节ID返回不在GameActivity模型中的下一个提示.

伪码 返回提示WHERE(count(GameActivity WHERE ACTIVITY_HINT=hint and Hint.Chapter.ID)=0)ORDER BY HINT_LEVEL ASC LIMIT 1

我想不出如何将两个查询链接在一起,第一个查询输入到第二个查询.

Queryset = SELECT * from Hint WHERE chapter.id = CHAPTER_ID

将查询集传递给GameActivity,并返回没有GameActivity条目的hint_Level最低的一个提示.

谢谢你的帮助,我觉得我没有正确地思考这个问题.

BCBB

推荐答案

您可以通过以下方式获得此信息:

Hint.objects.filter(gameactivity=None, chapter_id=my_chapter_id).order_by(
    'hint_level'
).first()

对于给定的capter_id,这将返回未被任何GameActivity引用的Hint,并且具有最低的hint_level.如果没有这样的项,则返回None.

Django相关问答推荐

在Python中向函数的查询列表添加条件

为特定表行更新或创建

Django 根据子级过滤父级

Django通用列表视图与多查询搜索

当从 fastapi 发送请求时,Django 无法对 Postgres 执行查询

如何连接到 docker 容器中的 postgres 数据库?

data._mutable= 在 Django REST 框架中为真

django - 表单没有错误,但 form.is_valid() 没有验证

django 用一个提交按钮提交两种不同的表单

如何在 django 中生成 url

Django REST 异常

如何使用 django 发送 POST 请求?

如何在 twitter-bootstrap 模式窗口中插入 django 表单?

Django 不调用模型清理方法

对 django 的 Http Delete 请求返回 301

Django unique=True 不工作

Django Rest Framework - 缺少静态目录

基于 User-Agent 更改 Django 模板

Django:AppRegistryNotReady()

如何在 django 模板中呈现有序字典?