簡體   English   中英

如何列出具有相同外鍵對象的所有對象?

[英]How do you list all object with the same foreign key object?

我有一個帶有名稱字段的部門模型,然后是部門字段的用戶模型,使用foreignkey到部門。 如何在模板中列出部門中的所有用戶? 有沒有辦法不使用多對多?

class Department(models.Model):
    name = models.CharField(max_length=64,unique=True)
    description = models.TextField(blank=True)

def __str__(self):
    return self.name

class User(AbstractUser):
    department = models.ForeignKey(Department,
    on_delete=models.CASCADE,
    blank=True,null=True)

def __str__(self):
    return self.username

User.objects.filter(department=<dept>)這將根據部門過濾細節。

只要您引用了要獲取用戶的部門,就不必創建全新的查詢集。

使用此models.py進行測試......

from django.db import models


class Department(models.Model):
    name = models.CharField(max_length=64, unique=True)
    description = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name


class User(models.Model):
    username = models.TextField()
    department = models.ForeignKey(
        Department,
        on_delete=models.CASCADE,
        blank=True,
        null=True,
    )

    def __str__(self):
        return self.username

此查詢應與您為名為departmentDepartment實例檢索用戶所需的查詢相同:

department.user_set.all()

Django shell的示例:

>>> from depts.models import Department, User
>>> 
>>> department = Department.objects.create(name='The North Pole')
>>> 
>>> for name in ('kungphu', 'K. Jones', 'S. Claus'):
...     User.objects.create(
...         username=name,
...         department=department,
...     )
... 
<User: kungphu>
<User: K. Jones>
<User: S. Claus>
>>> for user in department.user_set.all():
...     print(user)
... 
kungphu
K. Jones
S. Claus

此外,您還可以使用department.users代替department.user_set如果添加related_name='users'到外地User.department

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM