sagen, dass ich diese Struktur haben:immer alle einzigartig/unterschiedliche Elemente aus einer viele zu viele Feld django
class Distinct_Alert(models.Model):
entities = models.ManyToManyField(to='Entity', through='Entity_To_Alert_Map')
objects = Distinct_Alert_Manager()
has_unattended = models.BooleanField(default=True)
latest_alert_datetime = models.DateTimeField(null=True)
class Entity_To_Alert_Map(models.Model):
entity = models.ForeignKey(Entity, on_delete=models.CASCADE)
distinct_alert = models.ForeignKey(Distinct_Alert, on_delete=models.CASCADE)
entity_alert_relationship_label = models.TextField()
class Entity(models.Model):
label = models.CharField(max_length=700, blank=False)
related_entities = models.ManyToManyField('self')
identical_entities = models.ManyToManyField('self')
objects = Entity_Manager()
die anderen Felder abgesehen, was ich versuche, alle einzigartigen Einheiten von a zu tun ist, erhalten Auswahl verschiedener Alarme. Sagen wir also, dass ich 3 unterschiedliche Alarme erhalte, und jeder von ihnen hat 4 Entitäten in seinem Feld "Viele Personen", sagen wir, dass ein Paar geteilt wird, ich möchte nur die eindeutigen bekommen.
Ich tue dies:
ret_list = map(lambda x: x.get_dictionary(), itertools.chain(*[alert.entities.all() for alert in
Distinct_Alert.objects.filter(
has_unattended=True,
entities__related_entities__label=threat_group_label)]))
return [dict(t) for t in set([tuple(d.items()) for d in ret_list])]
Aber wie ich vorstellen, das ist überhaupt nicht optimal, da ich viel Betrogenen zog am Ende und dann am Ende deduping. Ich habe versucht, die verschiedenen Value-Entitäten zu ziehen, aber das zieht mir ein Long, das als Schlüssel verwendet wird, um die Entitäten der bestimmten Alarmtabelle zuzuordnen. Irgendeine Möglichkeit, dies zu verbessern?
Ich bekomme dies: [749L, 729L, 738L, 716L, 776L, 735L] als Ergebnis anstelle der Entity-Objekt selbst :( –
Ich habe meine Antwort bearbeitet. Es ist nicht sehr effizient, aber wenn Sie nicht viel haben –
Ich habe die bearbeitete Antwort versucht, habe das: 'long' Objekt ist nicht iterierbar –