class City(models.Model):
city_id = models.SmallIntegerField(primary_key=True)
city = models.CharField(max_length=50)
country = models.ForeignKey('Country')
last_update = models.DateTimeField()
objects = CityManager()
class Meta:
managed = False
db_table = 'city'
class Country(models.Model):
country_id = models.SmallIntegerField(primary_key=True)
country = models.CharField(max_length=50)
last_update = models.DateTimeField()
class Meta:
managed = False
db_table = 'country'
table として CityTable を以下のように作成する。各行の先頭にチェックボックスを配置する。このとき、チェックボックスへの accessor は pk としておく。
import django_tables2 as tables
class CityTable(tables.Table):
ck = tables.CheckBoxColumn(accessor="pk")
city = tables.Column(accessor="city",
verbose_name="都市名",
orderable=True,
attrs={"th": {"id": "country"}}
)
country = tables.Column(accessor="country.country",
verbose_name="国名",
orderable=True,
attrs={"th": {"id": "country"}}
)
class Meta:
attrs = {"class": "paleblue"}
チェックがついた行の情報を取得する場合は、対応する view 関数内で request.POST.getlist 関数にて取得する。なお、取得されるデータは文字列リストの形式となるため、list と map を組み合わせて、数値リストに変換している。
def city_view(request):
if request.method == "POST":
pks = list(map(int, request.POST.getlist("ck")))
・・・
0 件のコメント:
コメントを投稿