![](/img/trans.png)
[英]How to filter out profiles that have an appointment (foreign key relationship)?
[英]How to filter on a foreign key relationship
我有以下型號:
class UserProfile(models.Model):
user = models.OneToOneField(User)
class Site(models.Model):
user = models.ForeignKey(User)
site_name = models.CharField(max_length=128, blank=False, null=False)
class Team(models.Model):
site = models.ForeignKey(Site)
team_member_name = models.CharField(default='name', max_length=128, blank=False, null=False)
我有一個列出數據庫中所有team
成員的視圖:
@login_required
def home(request, team_member_id=None):
team_members = Team.objects.all().order_by('team_member_name')
如何過濾此內容,以便僅顯示與登錄user
具有相同site
團隊成員?
您可以使用model relations
來實現此目的。
要按不同模型中的字段排序,請使用與跨模型關系查詢時相同的語法。 也就是說,字段名稱,后跟雙下划線(__),后跟新模型中的字段名稱,依此類推。
在您的情況下,以下方法應該起作用:
team_members = Team.objects.filter(site__user=user).order_by('team_member_name')
這可以單行完成,但是讓我解釋一下,以便您可以理解這個概念:
您可以使用@login_required來從請求中登錄用戶(訪問視圖的用戶將始終登錄)
loggedin_user = request.user
獲取用戶的網站:
site_of_logged_in_user = Site.objects.get(user=loggedin_user)
# if there can be only one site for a user
現在您可以通過按站點過濾來獲得團隊
team = Team.objects.filter(site=site_of_logged_in_user)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.