J'ai une relation plusieurs à plusieurs dans Django même que celle-ci:Quel est le meilleur moyen d'obtenir une numérisation efficace de plusieurs à plusieurs avec les modèles Django?
class Account (models.Model):
name = models.CharField(max_length = 30)
user = models.ForeignKey(User, null = True, blank = True)
class Publisher (models.Model):
publisherID = models.BigIntegerField()
name = models.CharField(max_length = 30)
lastRequestedId = models.BigIntegerField()
class Subscription (models.Model):
user = models.ForeignKey(Account)
twitterPublisher = models.ForeignKey(Publisher)
Une liste des publisherIDs pour un compte est une liste d'abonnement. De temps en temps, je voudrais analyser les abonnements de chaque compte avec une telle liste d'ID publisher et mettre à jour les abonnements, ajouter de nouveaux abonnements pour les ID d'éditeur introuvables dans les abonnements accont et supprimer les abonnements non trouvés dans la liste des comptes publisherID. Cette liste est obtenue ailleurs.
Quelle est la meilleure façon de faire cela? Subscription.objects.all() et puis boucle à travers chacun (pourrait être beaucoup!) Et garder une trace des abonnements et des utilisateurs, éventuellement mise à jour une fois que je comprends l'état actuel de la base de données par rapport aux nouvelles informations? Ou est-ce que je fais une boucle sur les comptes et utilise filter() sur l'objet Subscription? Est-ce que cela conduira à beaucoup de requêtes mysql?
La liste des publisherIDs Je me ressemble à ceci:
[15446531, 15503880, 4909151, 105263800, 21457289, 14293310, 807095, 14511951,
0, 20214495, 15234407, 5988062, 16120265, 50393960, 33933259, 10059852, 652193,
88992966, 43166813, 65682198, 14581921, 12044602, 752673, 14414230, 18994120, 17180567,
17633960, 1468401, 71876190, 23969777, 63490206, 2425151, 14456474, 18396070, 62205298,
11348282, 62581962, 15234886, 30313925, 15166438, 17525171, 15007149, 10760422, 22677790,
14874480, 22093112, 24741685, 10454572, 19015586, 14572071, 37492156, 6253282, 37996645,
18725061, 15983724, 8294212, 24431892, 14589771, 773287, 20772763, 22636391, 816653,
19394188, 49793, 1688, 15813140, 20536157, 202003, 685513, 1000591, 17220934, 972651,
5668942, 1692901, 15913]
CLARIFICATION DE: J'ai une liste des ids par compte. Je souhaite également supprimer les abonnements si l'utilisateur a un abonnement s'il ne figure pas dans la liste des publisherids de cet utilisateur.
Je serais ravi d'obtenir des informations sur ce problème. Quelque chose ne va pas avec la question? –