이 없다? 내가 details
가 올바른 형식이 아닙니다 생각'RelatedManager'개체가 나는 다음과 같이 정의 된 모델이 더 속성
'RelatedManager' object has no attribute 'favourites'
하지만, 왜되지 않습니다 :
는이 오류를 받고 있어요? 그런 쿼리를 어떻게 수행 할 수 있습니까?
이 없다? 내가 details
가 올바른 형식이 아닙니다 생각'RelatedManager'개체가 나는 다음과 같이 정의 된 모델이 더 속성
'RelatedManager' object has no attribute 'favourites'
하지만, 왜되지 않습니다 :
는이 오류를 받고 있어요? 그런 쿼리를 어떻게 수행 할 수 있습니까?
user.details
에 액세스하면 UserDetail.user
외래 키의 역 참조를 액세스합니다. 외래 키 자체는 User
에 UserDetail
만 가질 수 있다고 지정하지 않으므로 django는 을 제공합니다.이 필터는 일반 Manager
처럼 필터링하고 쿼리 할 수 있습니다. 그래서 당신은 당신이 당신의 .objects
관리자에게하는 것과 똑같은 일을합니다. user.details.all()
, user.details.filter()
, user.details.get()
등을 요청할 수 있습니다. 그러면 메서드와 결과에 따라 쿼리 세트, 개체 또는 예외가 제공됩니다.
이가의 UserDetail 개체가 이미 해당 사용자에 대해 존재하는 가정, 그렇지 않으면 get()
이 예외가 발생합니다
request.user.details.get().favourites.add(article)
을보십시오.
오! 그것은 지금 훨씬 더 의미가 있습니다. 나는 * me *에게 사용자가 오직 하나의'UserDetail' 만 가지고 있음을 분명히 알았지 만, 나는 그것이 어디에도 지정되어 있지 않다고 생각한다. 고맙습니다. – mpen
외래 키를 사용하는 대신 OneToOneField를 사용하도록 모델을 변경 한 경우 예상 한대로 정확하게 수행 할 수 있습니다. OneToOneFields는 ForeignKeys와 비슷합니다. 단, 관련 객체가 하나뿐이기 때문에 Django는 관련 관리자를 통해 객체에 직접 액세스 할 수 있습니다. https://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield 참조 – mbargiel