如何获取外键对象值?
How can I get the foreign key object value?
我有 3 个 table 如下。
用户 table 有学生信息。
LecMst table 有讲座信息。
LecReq table 有学生注册的讲座信息。
models.py
class User(models.Model):
usn = models.CharField(max_length=20, primary_key=True, verbose_name='usn')
nm = models.CharField(max_length=50, blank=True, null=True, verbose_name='name')
userid = models.CharField(max_length=20, blank=True, null=True, verbose_name='ID')
class LecMst(models.Model):
leccode = models.CharField(max_length=15, null=False, primary_key=True, verbose_name='lecture_code')
lecname = models.CharField(max_length=100, null=True, verbose_name='lecture_name')
class LecReq(models.Model):
leccode_id = models.ForeignKey(LecMst, db_column='leccode', verbose_name='lecture_code', related_name = 'lecreqs')
usn_id = models.ForeignKey(User, db_column='usn', verbose_name='usn', related_name = 'lecreqs')
students_by_lecture.html 显示特定 class 中的学生列表。
除了 leccode_id、usn_id.
之外,我还想显示学生姓名和讲座名称的页面
lectures.py
def student_list_by_lecture(request):
qs_leccode = request.GET['leccode']
if qs_leccode:
qs = LecReq.objects.filter(leccode_id=qs_leccode)
paginator = Paginator(qs, 25) # Show 25 posts per page
page = request.GET.get('page')
try:
lecture_members = paginator.page(page)
except PageNotAnInteger:
lecture_members = paginator.page(1)
except EmptyPage:
lecture_members = paginator.page(paginator.num_pages)
return render(request, 'students_by_lecture.html', {
'lecture_members' : lecture_members,
'qs_leccode' : qs_leccode,
})
下面是students_by_lecture.html
我可以输入什么????。
<table>
<thead>
<tr>
<th>Lecture Code</th>
<td>Lecture Name</td>
<td>Student Name</td>
<td>Student No (usn)</td>
</tr>
</thead>
<tbody>{% for member in lecture_members %}
<tr>
<td>{{ member.????? }}</td>
<td>{{ member.????? }}</td>
<td>{{ member.????? }}</td>
<td>{{ member.????? }}</td>
</tr>{% endfor %}
</tbody>
</table>
可以像model.foreign_model_field.field
一样直接访问国外模型对象
那就试试吧。
对于讲座名称,请尝试:{{ member.leccode_id.lecname }}
对于学生姓名,请尝试:{{ member.usn_id.nm }}
可以通过以下方式轻松访问相关对象:
{{ member.leccode_id.lecname }}
有关 Django Docs: Lookups that span relationships 的更多信息。
另请注意,您的命名约定严格来说是错误的。您应该使用实体名称 leccode
而不是 leccode_id
来命名该字段,因为现在要访问实体的 ID,您应该使用 leccode_id_id
.
所以,我猜你想得到的是:
对于每个讲座印刷品,在该讲座中注册的学生(姓名和编号)以及讲座代码。
lectures_info = LecReq.objects.prefetch_related('leccode_id', 'usn_id')
for lecture in lectures_info:
print lecture.leccode_id.leccode
print lecture.leccode_id.lecname
print lecture.usn_id.nm
print lecture.usn_id.userid
这显然是查询方面,它可能正在回答您的问题:如何访问外键字段。请尝试根据您的要求进一步操作它,否则请发表评论,以便我可以进一步帮助您。
希望对您有所帮助:)
我有 3 个 table 如下。 用户 table 有学生信息。 LecMst table 有讲座信息。 LecReq table 有学生注册的讲座信息。
models.py
class User(models.Model):
usn = models.CharField(max_length=20, primary_key=True, verbose_name='usn')
nm = models.CharField(max_length=50, blank=True, null=True, verbose_name='name')
userid = models.CharField(max_length=20, blank=True, null=True, verbose_name='ID')
class LecMst(models.Model):
leccode = models.CharField(max_length=15, null=False, primary_key=True, verbose_name='lecture_code')
lecname = models.CharField(max_length=100, null=True, verbose_name='lecture_name')
class LecReq(models.Model):
leccode_id = models.ForeignKey(LecMst, db_column='leccode', verbose_name='lecture_code', related_name = 'lecreqs')
usn_id = models.ForeignKey(User, db_column='usn', verbose_name='usn', related_name = 'lecreqs')
students_by_lecture.html 显示特定 class 中的学生列表。 除了 leccode_id、usn_id.
之外,我还想显示学生姓名和讲座名称的页面lectures.py
def student_list_by_lecture(request):
qs_leccode = request.GET['leccode']
if qs_leccode:
qs = LecReq.objects.filter(leccode_id=qs_leccode)
paginator = Paginator(qs, 25) # Show 25 posts per page
page = request.GET.get('page')
try:
lecture_members = paginator.page(page)
except PageNotAnInteger:
lecture_members = paginator.page(1)
except EmptyPage:
lecture_members = paginator.page(paginator.num_pages)
return render(request, 'students_by_lecture.html', {
'lecture_members' : lecture_members,
'qs_leccode' : qs_leccode,
})
下面是students_by_lecture.html 我可以输入什么????。
<table>
<thead>
<tr>
<th>Lecture Code</th>
<td>Lecture Name</td>
<td>Student Name</td>
<td>Student No (usn)</td>
</tr>
</thead>
<tbody>{% for member in lecture_members %}
<tr>
<td>{{ member.????? }}</td>
<td>{{ member.????? }}</td>
<td>{{ member.????? }}</td>
<td>{{ member.????? }}</td>
</tr>{% endfor %}
</tbody>
</table>
可以像model.foreign_model_field.field
一样直接访问国外模型对象那就试试吧。
对于讲座名称,请尝试:{{ member.leccode_id.lecname }} 对于学生姓名,请尝试:{{ member.usn_id.nm }}
可以通过以下方式轻松访问相关对象:
{{ member.leccode_id.lecname }}
有关 Django Docs: Lookups that span relationships 的更多信息。
另请注意,您的命名约定严格来说是错误的。您应该使用实体名称 leccode
而不是 leccode_id
来命名该字段,因为现在要访问实体的 ID,您应该使用 leccode_id_id
.
所以,我猜你想得到的是:
对于每个讲座印刷品,在该讲座中注册的学生(姓名和编号)以及讲座代码。
lectures_info = LecReq.objects.prefetch_related('leccode_id', 'usn_id')
for lecture in lectures_info:
print lecture.leccode_id.leccode
print lecture.leccode_id.lecname
print lecture.usn_id.nm
print lecture.usn_id.userid
这显然是查询方面,它可能正在回答您的问题:如何访问外键字段。请尝试根据您的要求进一步操作它,否则请发表评论,以便我可以进一步帮助您。
希望对您有所帮助:)