Django反向过滤查询集外键示例不起作用
Posted
技术标签:
【中文标题】Django反向过滤查询集外键示例不起作用【英文标题】:Django Reverse Filter Queryset Foreign Key Example Not Working 【发布时间】:2020-05-29 07:31:54 【问题描述】:我大致遵循此处列出的示例:
Django Queryset with filtering on reverse foreign key
型号:
class Site(models.Model):
name = models.CharField(max_length=50)
class Profile(models.Model):
Days = '1st'
Mids = '2nd'
Nights = '3rd'
Work_Schedule_Choices = [
(Days, 'Day Shift'),
(Mids, 'Mid Shift'),
(Nights, 'Night Shift'),
]
sitename = models.ForeignKey(Site, on_delete=models.CASCADE, related_name='profiles')
title = models.CharField(max_length=100)
schedule = models.CharField(max_length=3,choices=Work_Schedule_Choices,default=Days)
totalusers = models.PositiveSmallIntegerField(default=1, validators=[MinValueValidator(1), MaxValueValidator(50)])
观看次数:
def sitedetail(request):
site = Profile.objects.filter(id__in=Profile.sitename)
if request.method == 'GET':
return render(request, 'App/site-detail.html', 'profile_set': Profile.objects.all(site))
当我加载页面时,它给出了一个 TypeError:
'ForwardManyToOneDescriptor' 对象不可迭代
有人可以帮助我了解我做错了什么吗?我看到多次引用同一个堆栈文章,所以我假设它是 Operator-Head-Space-Timing 错误:)
提前致谢。
【问题讨论】:
两个下划线id__in
好的,谢谢,为清楚起见进行了编辑。创建以下 TypeError:'ForwardManyToOneDescriptor' 对象不可迭代
【参考方案1】:
您需要获取网站:
from django.contrib.sites.shortcuts import get_current_site
def example_view(request):
profiles = Profile.objects.filter(sitename=get_current_site(request))
【讨论】:
以上是关于Django反向过滤查询集外键示例不起作用的主要内容,如果未能解决你的问题,请参考以下文章
迁移后在 Django 上更改 db_table 不起作用,并且添加用户 (AbstractUser) 外键会破坏 __str__()