python - 在 django 中执行右连接(采取 2)

标签 python django join orm

引用Performing a right join in django ,当我尝试类似的方法时(字段略有不同):

class Student:
    user = ForeignKey(User)
    department = IntegerField()
    semester = IntegerField()

class Attendance:
    student_attending = ForeignKey(Student, related_name='attendee')
    subject = ForeignKey(Subject)

当我运行此查询时:

queryset = Student.objects.all().select_related('attendance_set')

我收到这样的回复:

django.core.exceptions.FieldError: Invalid field name(s) given in select_related: 'attendance_set'. 

什么会触发该警告以及如何让“加入”正常工作?

最佳答案

该链接问题的公认答案很简单是错误的 - 作为评论指出。

select_lated 仅适用于正向关系。对于向后的,您需要 prefetch_lated:

Student.objects.all().prefetch_related('attendance_set')

请注意,这将执行两个单独的查询。

关于python - 在 django 中执行右连接(采取 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859312/

相关文章:

python - 使用 OneToOneField 时 Django 模型 u'id' 发生冲突

javascript - 如何使用脚本标签下的url标签

mysql - 使用连接 mysql 显示表中的特定记录

python - 没有重复的背包 : Maximum Amount of Gold - Python code question

python - Django mysqlclient 后端在 Windows 中产生 django.db.utils.OperationalError : (2059, <NULL>)

python - python中的递归计数器解决方案

sql-server - 连接派生表时获取 “No column was specified for column 1"

python - 如何在Python类继承中使用super()

python - 如何使用 Django 和 jQuery 设置文件下载对话框?

sql - 如果存在连接的数据条目,则返回 true (1),否则在 MS-SQL 中返回 false (0)