[英]Django 1.7 - SQL - Get data from One-To-Many relationship where relation may or may not exist
我有以下數據庫布局,
用戶(有一個) User_Profile
User_Profile (沒有,一個或多個) World_Profile
World_Profile ( 有一個 ) World
我想選擇所有的世界對象的列表,如果全球的形象存在於用戶登錄的世界也簡介。
World表具有屬性 is_public。 我想獲得所有具有 is_public = True 或用戶具有World_Profile的世界的列表。
我懷疑它與 select_related 術語有關,但我還沒有成功。 任何幫助將非常感激。
表屬性
用戶(用戶名,名字,姓氏,電子郵件)用戶配置文件(用戶名(FK->用戶),信息,foo,bar)世界配置文件(用戶配置文件(FK),世界(FK),字符名稱,黃金)世界(世界名稱,游戲速度,is_public, requires_subscription)
filter_string = Q(is_public = True) | Q(worldprofile__user_profile__user=user)
World.objects.select_related().filter(filter_string)
經過大量試驗和錯誤后找到了解決方案,不知道為什么 worldprofile 不需要下划線,我必須檢查一下。 謝謝大家。
Burhan Khalid 有一個更好的答案。 用戶 = request.user user.user_profile.world_profile_set.filter(world__is_public=True)
最簡單的部分是獲取當前登錄的用戶,它在request.user
可用。 由於 django “免費”提供反向關系,您可以執行以下操作:
user = request.user
user.user_profile.world_profile_set.filter(world__is_public=True)
filter_string = Q(is_public = True) | Q(worldprofile__user_profile__user=user)
World.objects.select_related().filter(filter_string)
經過大量試驗和錯誤后找到了解決方案,不知道為什么 worldprofile 不需要下划線,我必須檢查一下。 謝謝大家。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.