site
のhide = 0
からの別の値に基づいてすべての列を返したい場合は、created
から日付順に返します。私はdistinct()
指定されたフィールド名を持つ呼び出しは現在PostgresSQLによってのみサポートされているが、私はMySQLを実行していることを認識しています。私は実際のSQLクエリ(それはおそらく非常に効率的ではない)が、Django ORMに変換する方法がわからない。Django ORMクエリー、別個の値と同じテーブルを結合
models.py
from django.db import models
from django.utils import timezone
# Create your models here.
class Results(models.Model):
user_ip = models.GenericIPAddressField(unpack_ipv4=True)
site_ip = models.GenericIPAddressField(unpack_ipv4=True)
site = models.URLField()
reason = models.CharField(max_length=50)
hide = models.BooleanField(default=False)
created = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.site
表構造:
mysql > SHOW CREATE TABLE results\G
*************************** 1. row ***************************
Table: results
Create Table: CREATE TABLE `results` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_ip` char(39) NOT NULL,
`site_ip` char(39) NOT NULL,
`site` varchar(200) NOT NULL,
`reason` varchar(50) NOT NULL,
`hide` tinyint(1) NOT NULL,
`created` datetime(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=836 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
SQLクエリ:
SELECT * FROM
(
SELECT site, MAX(created) created
FROM results
GROUP BY site
ORDER BY MAX(created) DESC
LIMIT 10
) _d
JOIN results USING (site, created)
ORDER BY _d.created DESC
ormが必要な場合は、models.pyにフィールド – Exprator
を投稿する必要があります。@Expratorが私の 'models.py'を追加しました – HTF
hget_scanは何ですか?それのためのモデルがありますか? – Exprator