You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中通过ForeignKey过滤Skills数据并对应Entrepreneur展示到前端?

针对指定Entrepreneur过滤Skills数据并展示到前端的方案

首先先修正你提供的模型代码里的语法错误,否则会导致运行报错:

from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator

class Entrepreneur(models.Model):
    # 补充你的业务字段,比如姓名、简介等
    name = models.CharField(max_length=100)
    # ...其他字段

class Skills(models.Model):
    usevalue = models.ForeignKey(Entrepreneur, on_delete=models.CASCADE)  # 建议添加on_delete参数,避免数据库关联异常
    rating = models.PositiveSmallIntegerField(
        validators=[MinValueValidator(0), MaxValueValidator(5)]
    )
    # 补充技能名称字段,用来区分不同技能类型
    skill_name = models.CharField(max_length=50)

后端过滤数据

有两种常用方式获取指定创业者的技能数据:

方式一:通过外键筛选

先获取指定的Entrepreneur实例,再用filter方法筛选关联的Skills:

from django.shortcuts import get_object_or_404, render
from .models import Entrepreneur, Skills

def entrepreneur_skills(request, entrepreneur_id):
    # 根据ID获取创业者,不存在则返回404页面
    entrepreneur = get_object_or_404(Entrepreneur, id=entrepreneur_id)
    # 过滤该创业者的所有技能数据
    skills = Skills.objects.filter(usevalue=entrepreneur)
    # 将数据传递给前端模板
    return render(request, 'entrepreneur_skills.html', {
        'entrepreneur': entrepreneur,
        'skills': skills
    })

方式二:反向查询(更简洁)

Django会为外键自动生成反向查询管理器(默认是模型名_set),直接通过创业者实例获取关联技能:

# 替代上面的skills = Skills.objects.filter(usevalue=entrepreneur)
skills = entrepreneur.skills_set.all()

如果想自定义反向查询的名称,可以在ForeignKey中添加related_name参数,比如:

usevalue = models.ForeignKey(Entrepreneur, on_delete=models.CASCADE, related_name='skills')

之后就可以直接用entrepreneur.skills.all()获取技能数据。


配置URL路由

在应用的urls.py中添加路由,让前端可以通过ID访问指定创业者的技能页面:

from django.urls import path
from . import views

urlpatterns = [
    # 其他路由...
    path('entrepreneurs/<int:entrepreneur_id>/skills/', views.entrepreneur_skills, name='entrepreneur_skills'),
]

前端模板展示

创建模板文件entrepreneur_skills.html,用Django模板语法渲染数据:

<h3>{{ entrepreneur.name }}的技能评分</h3>
{% if skills %}
    <ul>
        {% for skill in skills %}
            <li>{{ skill.skill_name }}:{{ skill.rating }}/5</li>
        {% endfor %}
    </ul>
{% else %}
    <p>该创业者暂无技能数据</p>
{% endif %}

内容的提问来源于stack exchange,提问作者flavien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:40:34