Skip to main content
 首页 » 编程设计

python之在 django 模板中显示外键值

2025年05月04日46lovecherry

我查看了类似的问题,但无法找到合适的解决方案,或者我遗漏了什么?我有两个模型(SafetyCourse 和 SafetyCourseTaken)我有一个外键关系,从“已上过的安全类(class)”指向安全类(class),如下所示:

模型.py

class SafetyCourse(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    name = models.CharField(max_length=128, unique=True) 
 
    def __str__(self): 
        return self.name 
 
 
class SafetyCoursesTaken(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    profile = models.ForeignKey(EmployeeProfile, on_delete=models.CASCADE) 
    course = models.ForeignKey(SafetyCourse, on_delete=models.CASCADE, related_name='course_name') 
    conducted_date = models.DateTimeField(null=True, blank=True) 
    expiration_date = models.DateTimeField(null=True, blank=True) 
 
    class Meta: 
        verbose_name_plural = 'Safety Courses Taken' 

View .py

class ManageSafetyCourseTakenView(LoginRequiredMixin, generic.ListView): 
    login_url = reverse_lazy('users:login') 
    model = SafetyCoursesTaken 
    template_name = 'ppm/courses-taken.html' 
    paginate_by = 10 
 
    # override get_queryset to only show training related to employee profile 
    def get_queryset(self): 
        pk = self.kwargs['pk'] 
        return SafetyCoursesTaken.objects.filter(profile_id=pk) 

course-taken.html(模板)

{% for course_taken in object_list %} 
    <tr> 
        <td>{{ course_taken.course_id}}</td> 
    </tr> 
{% endfor %} 

我已经针对类似问题尝试了多种解决方案,但无法找到正确的解决方案。我尝试过:course_taken.course_name_set.select_related、course_taken.course_name_set 和其他一些。我想要做的只是显示类(class)名称而不是类(class) ID。我做错了什么?

请您参考如下方法:

看你的schema,我觉得模板里应该是这样的:

{% for course_taken in object_list %} 
    <tr> 
        <td>{{ course_taken.course.name }}</td> 
    </tr> 
{% endfor %}