2017-03-01 2 views
1

세 가지 모델이 있습니다. 게시물, 태그 및 구독자. 게시물과 구독자 사이에는 다 대다 관계가 있고 태그와 구독자는 다 대다 관계입니다. 게시물과 태그 사이에는 ForeignKey 관계가 있습니다. 주어진 게시물에 대한 모든 구독자를 관련 태그에 추가하고 싶습니다. 나는 다음을 수행함으로써 이것을 달성 할 수있다. 하지만 두 개의 for 루프를 반복하는 것보다 더 효율적인 방법이 있습니까?Django - 효율적으로 목록을 many-to-many 모델 필드에 추가하는 방법

all_subscribers = post.subscribers.all() 
for tag in tags: 
    for subscriber in all_subscribers: 
     tag.subscriber.add(subscriber) 
tag.save() 

위의 장난감 예제는 간략하게 사용하고 있습니다.

답변

1

나는 당신을 위해 무엇을 찾고있는 것은이 생각 :

for tag in tags: 
    tag.subscriber.add(*all_subscribers) 
    tag.save() 

또 다른 방법은, 하나의 빠른이,

class Subscription(models.Molde): 
    tag = models.ForeignKey(Tag) 
    subscriber = models.ForeignKey(Subscriber) 

그리고이 구독을 만들 일괄 중간 테이블을 만드는 것입니다

subscriptions = [] 
for tag in tags: 
    for subscriber in all_subscribers: 
     subscriptions.append(Subscription(tag=tag, subscriber=subscriber)) 
Subscription.objects.bulk_create(subscriptions) 
관련 문제