가정하자 나는이 다음과 같은 위치에 표시됩니다 3 그중 10 개체를 반환하는 검색어 세트 :의사 난수 순서의 검색어
이[ display 1 position ] [ display 2 position ] [ display 3 position ]
모델이 표현은 다음과 같다 :
class FeaturedContent(models.Model):
image = models.URLField()
position = models.PositiveSmallIntegerField(blank=True, null=True)
을
여기서 position은 1, 2, 3 또는 지정되지 않음 (Null) 일 수 있습니다.
지정된 위치의 오브젝트를 제외하고 임의로 QuerySet을 정렬 할 수 있기를 원합니다. 그러나, 나는 수행하여 주문할 수 없습니다
featured_content = FeaturedContent.objects.order_by('-position', '?')
내가 position = 2
을 가지고 하나 개의 항목이 있고, 다른 모든 항목은 다음 항목이 위치 1 대신에 위치 2.
Null
인 경우에 때문에
어떻게 주문하나요?
아마도 그것은 같은 딕셔너리 대신 목록, 뭔가 같은 데이터 것이 가장 것, 이것에 대해 생각 : 사이의 병합 정렬을하고, 나는 과정을 게시 할
`{'1': item or null, '2': item or null, '3': item or null, '?': [list of other items]}`
당신이해야 데이터베이스 내의 무작위 순서를 피할 수 있습니다. ([django documentation] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by)에서 지적했듯이) 느린! –
그럼 위에서해야 할 일을하는 더 좋은 방법은 무엇입니까? – David542