2016-01-21 55 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