2009-12-01 2 views

답변

36

user.details에 액세스하면 UserDetail.user 외래 키의 역 참조를 액세스합니다. 외래 키 자체는 UserUserDetail 만 가질 수 있다고 지정하지 않으므로 django는 을 제공합니다.이 필터는 일반 Manager처럼 필터링하고 쿼리 할 수 ​​있습니다. 그래서 당신은 당신이 당신의 .objects 관리자에게하는 것과 똑같은 일을합니다. user.details.all(), user.details.filter(), user.details.get() 등을 요청할 수 있습니다. 그러면 메서드와 결과에 따라 쿼리 세트, 개체 또는 예외가 제공됩니다.

+1

오! 그것은 지금 훨씬 더 의미가 있습니다. 나는 * me *에게 사용자가 오직 하나의'UserDetail' 만 가지고 있음을 분명히 알았지 만, 나는 그것이 어디에도 지정되어 있지 않다고 생각한다. 고맙습니다. – mpen

+8

외래 키를 사용하는 대신 OneToOneField를 사용하도록 모델을 변경 한 경우 예상 한대로 정확하게 수행 할 수 있습니다. OneToOneFields는 ForeignKeys와 비슷합니다. 단, 관련 객체가 하나뿐이기 때문에 Django는 관련 관리자를 통해 객체에 직접 액세스 할 수 있습니다. https://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield 참조 – mbargiel

8

이가의 UserDetail 개체가 이미 해당 사용자에 대해 존재하는 가정, 그렇지 않으면 get()이 예외가 발생합니다

request.user.details.get().favourites.add(article) 

을보십시오.

관련 문제