запрос, чтобы получить х вопросов, которые имеют какой-то тег у - PullRequest
2 голосов
/ 27 января 2020

У меня есть 2 модели:

class Question(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)

def __str__(self):
    return self.name


class Tag(models.Model):
    Tag_id = models.IntegerField()
    ques_id = models.ForeignKey(Question, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)

def __str__(self):
    return self.name

Какой будет запрос для получения 10 идентификаторов запросов для идентификаторов входных тегов? Выходной формат должен быть:

{
"id": 1,
"name": "QUES 1",
"tags": [{
    "id": 1,
    "name": "Abcd"
 }]
}

1 Ответ

3 голосов
/ 27 января 2020

Если у вас есть заданный список идентификаторов тегов tag_ids, вы можете получить Question s с помощью:

Question.objects.filter(<b>tag__tag_id__in=tag_ids</b>)

или вы можете ограничить количество вопросов и выделить их с помощью:

Question.objects.filter(tag__tag_id__in=tag_ids)<b>.distinct()[:10]</b>

Некоторые дополнительные замечания:

Примечание : Пожалуйста, используйте AutoField [Django -doc] для первичного ключа, это обеспечит соответствующее распределение первичного ключа, а также его обновление при сохранении объекта.

Примечание : Обычно каждый не добавляет суффикс _id к полю ForeignKey, так как Django автоматически добавит "двойное" поле с суффиксом _id. Следовательно, оно должно быть question вместо ques_id.

...