删除或隐藏使用datatable显示的列表中的重复的最快方法

时间:2016-03-31 06:44:02

标签: python django django-models datatable

我有一个objectA列表。

list = [ObjectA, ObjectA, ObjectA, ...]

class ObjectA(models.Model):
    title = models.TextField()
    description = models.TextField()
    list = models.TextField()
    ...

列表是通过合并2个查询集来完成的:

list = ObjectA.filter(Q(list__name='list1') | Q(list__name='list2')).distinct()

我使用dataTable在模板中显示对象。

我想删除"重复"在列表中,或者在我使用dataTable显示列表时隐藏它们。

如果

,该对象被视为重复
objectA1.title == objectA2.title && objectA1.description == objectA2.description

其他参数在2个副本中可能有所不同。

该列表包含3' 000到5&000; 000 ObjectA。在我的views.py中删除的最佳方法是什么,或者在我的template.html中隐藏副本?

1 个答案:

答案 0 :(得分:0)

  1. 您必须编写__init__()方法,否则您将在ObjectA
  2. 的所有实例之间共享参数
    def __init__(self, title, description):
         self.title = title
         self.description = description
    
    1. 覆盖比较运算符__eq__
    2. def __eq__(self, other):
           return self.title == other.title && self.description == other.description
      
      1. 只需将对象列表添加到set,您就可以获得唯一对象的集合