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 件のコメント:
コメントを投稿