Django表2限制表单中的字段

时间:2016-01-21 03:19:59

标签: python django django-tables2

我正在尝试将字段限制在我的表格中。我看到的唯一方法是通过PersonTable对象使用字段属性,例如this fields = [first_name,last_name]。我想从申请表中这样做。我试图覆盖get_queryset()方法,但它只能传递少量数据,但列仍然只是空白。有没有一种很好的方法来使用通用视图?

class Person(models.Model): 
    first_name =models.CharField(max_length=200)
    last_name =models.CharField(max_length=200) 
    user = models.ForeignKey("auth.User") dob = models.DateField() 


class PersonTable(tables.Table): 
    class Meta: 
        model = Person
        fields = [first_name, last_name]


class PersonList(SingleTableView):
    model = Person
    table_class = PersonTable

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,那么表类上就有一个exclude instance变量,所以你可以覆盖get_table并在你的视图中做这样的事情:

class PersonList(SingleTableView):
    model = Person
    table_class = PersonTable
    template_name = "person.html"

    def get_table(self):
        table = super(PersonList, self).get_table()
        columns = self.request.GET.getlist('column')
        tuple_to_exclude = tuple(set(table.columns.names()) - set(columns))
        table.exclude = tuple_to_exclude
        return table