2016-01-21 59 views
0

我想限制在我的表中的字段。我看到要做到这一点的唯一方法是通过PersonTable对象的字段属性,像这个fields = [first_name,last_name]。我想从请求表单中完成。我试图覆盖get_queryset()方法,但它只工作在较少的数据中,但列仍然只是空白。通用视图有没有一种好方法?Django表格2限制字段形式

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 

回答

0

如果有人运行到同样的问题,有一个排除对表类的实例变量,所以你可以只覆盖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