具有多个外键的 Django 内联表单

2023-12-06

我正在尝试在我的模板中使用 Django 的 ModelForm 和内联表单。但是,我找不到任何文档可以整齐地映射到具有多个外键的数据库模型回到同一个表。这些是我的模型:

# models.py

class Universities(models.Model):
    name = models.CharField(max_length=100)

class Majors(models.Model):
    name = models.CharField(max_length=80)

class Resumes(models.Model):
    name = models.CharField(max_length=70)
    undergrad = models.ForeignKey(Universities, related_name='undergrad_university')
    undergrad_major = models.ForeignKey(Majors, related_name='undergrad_major')
    grad = models.ForeignKey(Universities, related_name='grad_university')
    grad_major = models.ForeignKey(Majors, related_name='grad_major')

我怎样才能让 Django 生成一个用于提交简历的表单,用户可以在其中输入他们的大学名称和专业?所有四个都将用于在保存新简历之前在各自的数据库中创建新条目(2 个在大学中,2 个在专业中),类似于内联表单集示例适用于单个外键。


EDIT2:用于制作表格。我想我会通过重写 save() 方法来完成个性化表单,如下所示(forms.py):

class YourForm(forms.Form):
    fname = forms.CharField(label="name",max_length=70,validators=[#Choose your validators here])
    fundergrad = forms.CharField(label="fundergrad",max_length=100,validators=[#Choose your validators here])
    fundergrad_major = forms.CharField(label="fundergrad_major",max_length=80,validators=[#Choose your validators here])
    fgrad = forms.CharField(label="fgrad",max_length=100,validators=[#Choose your validators here])
    fgrad_major = forms.CharField(label="fgrad_major",max_length=80,validators=[#Choose your validators here])

    def save(self, datas):
        res = Resumes()
        res.name = datas['fname']
        
        undergrad = Universities()
        undergrad_major = Majors()
        grad = Universities()
        grad_major = Majors()
        
        undergrad.name = datas['fundergrad']
        undegrad_major.name = datas['fundergrad_major']
        grad.name = datas['fgrad']
        grad_major.name = datas['fgrad_major']
    
        undergrad.save()
        undergrad_major.save()
        grad.save()
        grad_major.save()
    
        res.undergrad = undergrad
        res.undergrad_major = undergrad_major
        res.grad = grad
        res.grad_major = grad_major
    
        res.save()
        return res

在views.py中:

def formView(request) :
  if request.method == 'POST':
      form = YourForm(request.POST)
      if form.is_valid():
          datas={}
          datas['fundergrad']=form.cleaned_data['fundergrad']
          datas['fundergrad_major']=form.cleaned_data['fundergrad_major']
          datas['fgrad']=form.cleaned_data['fgrad']
          datas['fgrad_major']=form.cleaned_data['fgrad_major']

          form.save(datas)

  #Then do what you have to do in your view
  

编辑1:(没有回答问题,但它可能对某人有帮助,所以我把它放在这里)

我会在 admin.py 中尝试使用类似的东西:

class UniversitiesInline1(admin.StackedInline):
  model = Universities
  fk_name = "undergrad"

class UniversitiesInline2(admin.StackedInline):
  model = Universities
  fk_name = "grad"

class MajorsInline1(admin.StackedInline):
  model = Majors
  fk_name = "undergrad_major"

class MajorsInline2(admin.StackedInline):
  model = Majors
  fk_name = "grad_major"

class ResumesAdmin(admin.ModelAdmin)
  inlines = [
    UniversitiesInline1,
    UniversitiesInline2,
    MajorsInline1,
    MajorsInline2,
  ]

admin.site.register(Resumes, ResumesAdmin)

说明:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个外键的 Django 内联表单 的相关文章

随机推荐

  • 构建 android 项目时出现 CXX1405 cmake 异常

    当我构建项目时出现错误 如下所示 我尝试了很多事情但从未成功 我使用的是 m1 MacBook 这与此错误有关吗 CXX1405 构建 Json 时出现异常启动进程 命令 Users serhat Library Android sdk c
  • 以编程方式创建扩展的 UItableViewCell

    我有一个 tableviewcell 我想在点击时展开和折叠 我找到的所有示例都是故事板基础 我正在尝试以编程方式执行此操作 我最初的想法是创建一个子视图并将其限制到内容视图 但是当我使用以下命令调整单元格的高度时heightForRowA
  • 如何从对于内存来说太大的文件构建(或预先计算)直方图

    python 是否有一个图形库不需要将所有原始数据点存储为numpy数组或列表以绘制直方图 我有一个数据集对于内存来说太大 并且我不想使用子采样来减少数据大小 我正在寻找的是一个可以获取生成器输出的库 从文件生成的每个数据点 作为float
  • 在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)

    我按照此处概述的说明进行操作 在 Mac 上的 XAMPP 上安装 PHP 国际化扩展 Intl 运行 sudo pecl install intl 从地窖中选择了正确的文件 然后发生了这个错误 private tmp pear temp
  • 是否有 CheckStyle 规则强制 if else 关键字位于 if/else 梯形图中的同一行?

    基于这个问题看来 CheckStyle 的默认模板将允许 if else 梯子将if and else有换行符 意思是我愿意this被标记为违规的代码 if true System out println 20 else if true S
  • 按字体计算 Microsoft Word 文档中的字数?

    我有一个包含代码示例的大型文档 我想知道字体 Calibri Body 中所有文本的字数 无论大小如何 我想忽略 Consolas 等 我有一个按斜体计数的宏 作为示例发布 但无法运行它 Sub IgnoreItalics Dim lngW
  • R Shiny 观察事件问题

    当在数据表中选择行并且有人按下 删除行 开关时 我试图从数据框中删除行 input click rows selected 给出所选行的 id 我使用observeEvent和observe似乎有问题 因为代码在我第一次轻按开关时删除了选定
  • Facebook 分享/评论无法正常工作

    在我的页面中 我添加了 Facebook 评论和分享按钮 一切都是按照他们的指示完成的 所以 我已经包含了加载脚本 div div
  • Facelets:使用 ui:param 将 bean 名称传递给操作属性

    由于某些自定义组件在其属性中需要 bean 名称 而不是 bean 实例 因此我需要在页面之间传递实际的 bean 名称 由于 bean 本身也被非自定义组件使用 我想避免使用额外的ui param 就像这里描述的那样在 中传递操作 因为它
  • 奇怪 - mysql 的 sql::SQLException 没有被它的类型捕获,而是被捕获为 std::exception 并成功地返回

    我正在使用 mysql c 连接器和这个 有点简化的 代码 try statement gt setString 1 word statement gt executeUpdate catch sql SQLException e I do
  • 如何以delphi形式使用Gif动画

    我认为 gif 动画图像没有原生支持 怎样才是最好的方法呢 任何允许这样做的免费组件 我正在考虑使用 TImage 和 ImageList Timer 但我需要将 gif 的每一帧导出到单独的 bmp 文件 在现代 Delphi 中这非常简
  • 使用 JSON 填充图表时 Google 图表中的工具提示

    我目前正在使用 JSON 填充我的 Google 图表 但我还需要自定义工具提示 目前我的 JSON 如下所示 cols id label date type string id label price type number rows c
  • python / scikit-learn 中距离计算的稀疏实现

    我有一个 svmlight 格式的大型 100K x 30K 且 非常 稀疏的数据集 加载如下 import numpy as np from scipy cluster vq import kmeans2 from scipy spati
  • 在 Ubuntu 上找不到 Java 应用程序主类

    我正在使用 Gradle 应用程序插件来分发适用于 Windows 和 Ubuntu Linux Mac 等的 Java 应用程序 几周前我在 Linux 上对此进行了测试 效果非常好 今天 在我的 Linux 机器上找不到我的 Main
  • Python 找不到 System32

    我想打开我创建的一个exe 它位于Windows的System32文件夹中 我通过以下命令执行此操作 subprocess call C Windows System32 ListTest exe 但不知何故Python找不到System3
  • java守护线程

    大家好 当封闭的线程完成时 守护线程会停止工作吗 或者当 主 线程完成时守护线程将停止 我在 jre6 上测试了这个例子 结果是daemon thread stopped working when the enclosing it thre
  • 如何使单击事件适用于具有同一类的多个元素?

    我试图在每次用户单击多个图块时实现翻转效果 这有点像仪表板类型网页的开始 如何使点击事件适用于多个同名类 所有图块都具有相同的类名 但在不同的 box div 下 jquery 单击事件似乎仅在添加的最后一个图块中实现 而其他图块保持静态
  • Bash 将带引号的行分割成参数

    希望这个问题以前没有出现过 至少我没有找到答案 也许看起来不太好 假设我收到了这段文字 hello hello hello world 请告诉我为什么这两个脚本有不同的输出 1 文本保存在文件中 bin bash while read li
  • 我需要回答有关 setTimeout 的问题

    所以我们都知道 setTimeout 在执行某些操作之前会等待一定的时间 我的问题是 它是否先等待上面的代码完成执行 然后再等待一秒钟执行其他操作 或者只是等待一秒钟 无论上面的代码是否已完成执行 它都会执行其余的代码无论如何 代码 if
  • 具有多个外键的 Django 内联表单

    我正在尝试在我的模板中使用 Django 的 ModelForm 和内联表单 但是 我找不到任何文档可以整齐地映射到具有多个外键的数据库模型回到同一个表 这些是我的模型 models py class Universities models