![](/img/trans.png)
[英]How to block same object reference for Foreign key in same table in Django?
[英]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
此查詢應與您為名為department
的Department
實例檢索用戶所需的查詢相同:
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.