2013-10-03 3 views
0

에서 갱신이 개 모델 나는이 개 장고 모델과 같이이 : 이제장고 : 한 번

class Skill(models.Model): 
    title = models.CharField(max_length=255) 

    def __unicode__(self): 
     return self.title 


class UserSkills(models.Model): 
    user = models.ForeignKey(User) 
    skill = models.ManyToManyField(Skill) 

    def __unicode__(self): 
     return '%s | %s' % (self.user, self.skill) 

, 나는 동시에 기술 모델을 업데이트하려는 사용자와 관련된 기술의 목록 및 사용자의 관련 기술이 . 다음과 같이합니다.

# cleaned_skills[] is list if unicode strings 

for skill in cleaned_skills: 
    s, created = Skill.objects.get_or_create(title=skill) 
    s.save() 
    u, created = UserSkills.objects.get_or_create(skill=s, user=request.user) 
    u.save() 

이는 나에게 맞는 것 같지 않습니다. 같은 시간에 SkillUser 모델을 모두 업데이트해야하는 몇 가지 방법이 있습니까?

+0

'Skill' 모델에'post_save' 신호를 사용하여'UserSkills' 객체를 생성하는 것을 고려해야합니다. – karthikr

+0

Ok. 그것이 합리적입니다. 비록 내가 신호에 익숙하지 않다는 것을 인정합니다. –

+0

많은 도움을 얻을 수 있습니다. 특히 SO. 괜찮을거야 – karthikr

답변

1

개인적으로 나는 제대로 수행하고 있다고 생각합니다.

+0

너는보기에서 그것을 하는가? –

+0

@DarwinTech 예. 여러보기에서 반복적으로 작업하는 경우 코드를 Manager에 넣습니다. http://www.djangobook.com/en/2.0/chapter10.html#adding-extra-manager-methods 및 https://docs.djangoproject.com/en/dev/topics/db/managers/에서 살펴보십시오. . –

+0

감사합니다. 매우 유용합니다! –