私は Django 1.3 を使用しており、「グループ化」の種類のクエリを使用してオブジェクトの配列を取得したいと考えています。簡単なコードを次に示します。
class Product(models.Model):
id = models.IntegerField(primary_key=True)
active = models.BooleanField()
name = models.CharField(blank=True, max_length=500)
slug = models.SlugField(blank=True, max_length=500)
program = models.CharField(blank=True, max_length=500)
number = models.CharField(blank=True, max_length=500)
image = ...
url = ...
シェル内:
>>> p = Product.objects.all().some_group_functions('slug')
>>> p
[<Product: Abelly Hat>, <Product: Abelt Bracelet>, <Product: Abigail Earrings>, <Product: Abigail Earrings>'...(remaining elements truncated)...']
変数 p に一意のスラッグを持つオブジェクトのみを取得する方法は?
Product オブジェクトをリストとして取得する方法はありますか?
編集:可能な回避策 それは私がやりたいことをしますが、より良い解決策があれば教えてください:
私の見解では、ロジックはオブジェクト QuerySet を取得します。
products = Product.objects.filter(*whatever filter you like*)
products = remove_duplicates(products, 'slug')
そして remove_duplicates 関数
def remove_duplicates(seq, attr=None):
seen = {}
result = []
for item in seq:
if attr:
tmpattr = getattr(item, attr)
else:
tmpattr = item
if tmpattr in seen: continue
seen[tmpattr] = 1
result.append(item)
return result