実現したいこと
django-filterで文字列型日付データのドロップダウンを並び替えしたい
発生している問題・分からないこと
django-filterでpostgresqlのテーブルを一覧表示したフォームでレコード選択用のドロップダウンを設置しておりますが、文字列型の日付データのため並び替えが出来ておりません。このような場合に並び替えする方法を知りたいです。
該当のソースコード
Python
1# モデル 2# myapp/models.py 3 4from django.db import models 5 6class Db11(models.Model): 7 hiduke = models.CharField(max_length=10, verbose_name='日付') 8 koujyou = models.CharField(max_length=255, verbose_name='工場') 9 ~省 略~ 10 def __str__(self): 11 return self.hiduke
Python
1# フィルター 2# myapp/filters.py 3 4import django_filters 5import datetime 6from .models import Db11 7 8class Db11hidukeFilter(django_filters.FilterSet): 9 hiduke = django_filters.ModelChoiceFilter( 10 queryset=Db11.objects.all().order_by('hiduke').distinct('hiduke')) 11 class Meta: 12 model = Db11 13 fields = ['hiduke']
Python
1# フォーム 2# myapp/forms.py 3 4from django import forms 5from .models import Db11 # ここを追加 6 7class Db11Form(forms.ModelForm): 8 class Meta: 9 model = Db11 10 fields = ['hiduke', 'koujyou', 'kaisya', 'genba', 'koujyouwatashi', 'syurui', 'suuryou', 'motikaeri', 'kigou', 'haikan', 'yobi', 'cement', 'kotsuzai', 'slump', 'jis', 'jyuryou', 'nkeisan', 'n', 'doken', 'kanmin', 'daikou', 'bikou']
Python
1# ビュー 2# myapp/views.py 3 4from django.shortcuts import render, redirect, get_object_or_404 5from .models import Db11 6from .forms import Db11Form 7from .filters import Db11hidukeFilter 8#from django_tables2 import SingleTableView 9#from .tables import Db11Table 10 11# 一覧表示 12def db11_list(request): 13# db11s = Db11.objects.all() 14 db11s = Db11hidukeFilter(request.GET, queryset=Db11.objects.all()) 15 return render(request, 'myapp/db11_list.html', {'filter': db11s}) 16 ~省 略~
Python
1<!-- templates/myapp/db11_list.html --> 2<h1>出荷一覧</h1> 3<a href="{% url 'db11_create' %}">新規登録</a> 4<form method="get"> 5 {% csrf_token %} 6 {{ filter.form.as_p }} 7 <input type="submit" /> 8</form> 9<table class="table table-striped table-responsive"> 10 <tr> 11 <th>ID</th> 12 <th>日付</th> 13 <th>工場</th> 14 ~ 省 略 ~ 15 </tr> 16 <tr> 17 {% for db11 in filter.qs %} 18 <th>{{ db11.id }}</th> 19 <td>{{ db11.hiduke }}</td> 20 <td>{{ db11.koujyou }}</td> 21 ~ 省 略 ~ 22 <th> 23 <a href="{% url 'db11_update' db11.pk %}">Edit</a> 24 </th> 25 <th> 26 <form action="{% url 'db11_delete' db11.pk %}" style="display:inline;"> 27 <button type="submit">Delete</button> 28 </form> 29 </th> 30 </tr> 31 {% endfor %} 32</table>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
queryset=Db11.objects.all().order_by('hiduke').distinct('hiduke'))
このhidukeカラムをStringからDate型にすれば良いのではと思っているのですが
実現方法がわかりません
補足
開発PC Windows 11 Pro
IDE Visual Studio Community 2026
サーバー ubuntu 22.04 LTS
Python 3.12.3
Postgresql 18
回答1件
あなたの回答
tips
プレビュー