0
私はDjango 1.11を使用しています。私は手動でクエリセットの順序を変更する方法を見つけようとしています。ここに私のセットアップは次のとおりです。Djangoでクエリセットを手動で注文する
models.py
class Channel(models.Model):
channel_no = models.CharField(max_length=4, unique=True)
def __str__(self):
return self.channel_no
私は私が私のために使用したいチャンネル番号の配列を持っている:
私がオーダーすることを使用するにはどうすればよいchannel_order = ['2','4','6','8','10','1','3','5','7','9']
クエリーセット?
私はMySQLでこれを実現するには、フィールドをSelectステートメントに使用してください。ここに例があります:
SELECT * FROM Channel
ORDER BY FIELD(`channel_no`,'2','4','6','8','10','1','3','5','7','9')
は、通常、あなたが '.order_by(「channel_noを」)'を使用することができますが、これは辞書的にご注文されます:あなたは、ユーザーによって定義されたカスタムの順序付けを必要と
UPDATEは
これは、あなたがそれを達成することができる方法でありますCharFieldのために。 CharFieldを使用してIntegerFieldではなく数値を格納する理由はありますか? – Tim
これを見ていただきありがとうございます。私はIntegerFieldにすることができますが、アプリケーションは、データベースに単一の文字列として入力することで、使用したいチャンネルの順序を入力する設定です。 – RMP
注文のために文字列を明示的に許可している場合、おそらく必要なのは語彙の順序です。クエリーセットに '.order_by( 'channel_no')'を追加するだけです。 – Tim