0

次のコードがあります。

  for e in Contact.objects.filter(contact_owner=batch.user, group=batch.group):
            msg = Message.objects.create(
                recipient_number=e.mobile,
            )

ただし、以下のようなことをしたいと思います。最初に、オブジェクトにgroupif not フィルターがオンになっているかどうかを確認し、 contactelse フィルターがグループにオンになっています。

ご覧のとおり、これはあまり DRY ではありません。どうすればこれを改善できますか?

 if self.group == None:
        for e in Contact.objects.filter(contact_owner=batch.user, contact=batch.group):
        msg = Message.objects.create(
            recipient_number=e.mobile,
        )

 else:
     for e in Contact.objects.filter(contact_owner=batch.user, group=batch.group):
     msg = Message.objects.create(
        recipient_number=e.mobile,
     )
4

2 に答える 2

1

この種の短い記述を好む場合は、if 演算子を使用することもできます。

q=Contact.objects.filter(contact_owner=batch.user)
q = q.filter(contact=batch.group) if self.group is None else q.filter(group=batch.group)
for e in q:
    msg = Message.objects.create(
        recipient_number=e.mobile,
    )
于 2013-05-28T11:40:09.647 に答える