我有兩個模型 Project 和 User。一個專案的團隊是一個具有 User 模型的多對多領域。
模型.py
# Create your models here.
class Project(models.Model):
title = CharField(max_length=30)
description = TextField()
due_date = DateField()
team = ManyToManyField(settings.AUTH_USER_MODEL)
INACTIVE = 0
ACTIVE = 1
STATUS = (
(INACTIVE, ('Inactive')),
(ACTIVE, ('Active')),
)
active = models.IntegerField(default=1, choices=STATUS)
def __str__(self) -> str:
return f'{self.title}'
視圖.py
@login_required
def index(request):
user = request.user
tickets = Ticket.objects.filter(assigned_to=user)
ticket_count = len(tickets)
projects = Project.objects.filter(team__in = user)
project_count = len(projects)
context = {
'tickets':tickets,
'ticket_count':ticket_count,
'projects':projects,
'project_count':project_count,
}
return render(request, 'bugtracker_app/index.html', context)
我正在嘗試使用查詢集 API 回傳當前登錄用戶已分配給的專案。但是我一直收到以下錯誤:
TypeError: 'User' object is not iterable
如何解決此錯誤并獲取用戶正在處理的專案的查詢集?
uj5u.com熱心網友回復:
這一行是你的罪魁禍首:
projects = Project.objects.filter(team__in = user)
由于它是 ManyToManyField,您實際上不必檢查 __in 甚至 __contains。您要查找的記錄將用戶作為團隊屬性。
嘗試這個:
projects = Project.objects.filter(team = user)
uj5u.com熱心網友回復:
嘗試將 Project 模型中的 team 屬性更改為:
team = ManyToManyField(settings.AUTH_USER_MODEL, related_name= 'user_projects')
然后在視圖中,您可以使用
user.user_projects.all()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371707.html
