students = Student.objects.prefetch_related('user__applications').all()
students.user__applications # Error
因此,学生拥有与应用程序列表相关联的User对象的外键。但是如何从Student对象访问应用程序列表?
答案 0 :(得分:1)
prefetch_related
和select_related
都不会改变您访问相关数据的方式;你通过字段或反向关系来做,就像你没有使用这些方法一样。
在这种情况下,您有一个由学生组成的查询集;其中每个属性都有user
属性,该属性为User对象提供了一个applications
字段,该字段提供了另一个查询集。所以,例如:
students[0].user.applications.all()[0]
答案 1 :(得分:0)
您需要在val instructionPress = resources?.getString(R.string.settings_press)
val okText = resources?.getString(R.string.ok)
val spannableString = SpannableString(okText)
val spannableBuilder = SpannableStringBuilder()
spannableBuilder.append(instructionPress)
spannableBuilder.append(spannableString, StyleSpan(Typeface.BOLD), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
instructionText.setText(spannableBuilder,TextView.BufferType.SPANNABLE)
模型的related_name
字段中设置ForeignKey
属性才能从Application
模型中调用它。例如:
Student
然后你可以从你的学生模型中调用它:
class Student(models.Model):
email = models.CharField(max_length=100, unique=True)
created = models.DateTimeField(auto_now_add=True)
class Application(models.Model):
student = models.ForeignKey(Student,related_name="applications", on_delete=models.CASCADE)
"""other fields"""
您将拥有学生名单。因此,您需要访问每个学生对象,然后您可以访问该特定学生的应用程序,如下所示:
students = Student.objects.all().prefetch_related('applications')