Django ModelForm使用不同的ForeignKey创建多个实例

约瑟夫

在我的Django应用中,我有两个类似的模型:

class Foo(models.Model):
    name = models.CharField(max_length=10)
    bar = models.ForeignKey(Bar)

class Bar(models.Model):
    class descr = models.CharField(max_length=50)

我想要一个Foo的ModelForm,这很容易。但是,我希望能够创建Foo分别绑定到不同Bar实例的多个实例。因此,假设我有三个Bar实例,我想有一个模型表单,该模型表单只有一个表单并且在一个提交上创建三个Foo实例,每个实例分别将新Foo实例链接到我的一个Bar实例。

基本上,我正在做的是Foo的“批量创建”。我不想使用多对多,因为我不想将一个Foo对象绑定到三个Bar对象。我希望每个Bar都有自己独特的Foo。

我认为可以使用ModelForm,并在实例化它时,可能向Bar实例添加一些引用,然后save()在该Modelform上重写以创建“重复”条目。我的模型窗体不包含该bar字段,因为我将手动处理它。

这看起来像是正确的方法吗?有什么陷阱吗?其他设计方法?

Shang Wang

它并不像您想的那么复杂。在django中,将对象的id设置为null并再次保存时,django将创建一个与第一个实例相同的新实例。因此,您可以大致执行以下操作:

form = FooForm(request.POST or None)
if form.is_valid():
    new_foo = form.save()
    new_foo.id = None
    # this will create another instance
    new_foo.save()

该文档的一节对此进行了描述

您的方法有一个陷阱,您应该尽量避免覆盖模型/模型形式save()方法,它会弄乱很多事情和/或使事情变得复杂。如果你想保存与型号,使用Django额外的步骤东西pre_savepost_save 信号如果您想使用模型形式做某事,请根据需要进行obj = form.save(commit=False)更改obj,然后执行obj.save()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django-具有从ForeignKey属性派生的字段的ModelForm

来自分类Dev

Django模板:页面使用不同的CSS

来自分类Dev

Django Admin-如何选择使用ForeignKey创建的新数据?

来自分类Dev

Django:在ModelForm中为ForeignKey添加“添加新”按钮

来自分类Dev

Django:使用不带ForeignKey字段的select_related

来自分类Dev

如何在Django的多个ForeignKey字段中实施不同的值

来自分类Dev

django:ForeignKey和实例

来自分类Dev

Django多个实例/内联字段

来自分类Dev

Graphene-Django创建多个实例

来自分类Dev

在Django中使用Foreignkey的UpdateView

来自分类Dev

在Django中使用ModelForm创建UpdateForm

来自分类Dev

如何使用不同的HTML名称创建Django表单列表,以便我们轻松检索它们?

来自分类Dev

Django查询具有不同的ForeignKey

来自分类Dev

将Django模型的实例加载到modelform

来自分类Dev

无法在Django 1.5上实例化ModelForm

来自分类Dev

使用名称不同的字段创建Django Join

来自分类Dev

Django创建ModelForm,其中隐藏了OneToOneField,但必填

来自分类Dev

在Django中使用不同ID批量更新的正确方法

来自分类Dev

如何为抽象模型创建Django ModelForm?

来自分类Dev

Django多个实例/内联字段

来自分类Dev

使用不同的设置值启动Django

来自分类Dev

指定Django ModelForm实例的数据库

来自分类Dev

Django:在ModelForm上选择父模型的实例

来自分类Dev

使用不同的构造函数为不同的类创建实例

来自分类Dev

如何使用django循环{% %}创建多个<div>

来自分类Dev

无法弄清楚如何使用不同的前缀 django 创建多个 Modelforms

来自分类Dev

如何在 Django ModelForm 中获取实例

来自分类Dev

在 Django 中使用不带“def __init__”的“self”实例

来自分类Dev

django:基于 ModelForm 字段创建 HTML 警报?

Related 相关文章

  1. 1

    Django-具有从ForeignKey属性派生的字段的ModelForm

  2. 2

    Django模板:页面使用不同的CSS

  3. 3

    Django Admin-如何选择使用ForeignKey创建的新数据?

  4. 4

    Django:在ModelForm中为ForeignKey添加“添加新”按钮

  5. 5

    Django:使用不带ForeignKey字段的select_related

  6. 6

    如何在Django的多个ForeignKey字段中实施不同的值

  7. 7

    django:ForeignKey和实例

  8. 8

    Django多个实例/内联字段

  9. 9

    Graphene-Django创建多个实例

  10. 10

    在Django中使用Foreignkey的UpdateView

  11. 11

    在Django中使用ModelForm创建UpdateForm

  12. 12

    如何使用不同的HTML名称创建Django表单列表,以便我们轻松检索它们?

  13. 13

    Django查询具有不同的ForeignKey

  14. 14

    将Django模型的实例加载到modelform

  15. 15

    无法在Django 1.5上实例化ModelForm

  16. 16

    使用名称不同的字段创建Django Join

  17. 17

    Django创建ModelForm,其中隐藏了OneToOneField,但必填

  18. 18

    在Django中使用不同ID批量更新的正确方法

  19. 19

    如何为抽象模型创建Django ModelForm?

  20. 20

    Django多个实例/内联字段

  21. 21

    使用不同的设置值启动Django

  22. 22

    指定Django ModelForm实例的数据库

  23. 23

    Django:在ModelForm上选择父模型的实例

  24. 24

    使用不同的构造函数为不同的类创建实例

  25. 25

    如何使用django循环{% %}创建多个<div>

  26. 26

    无法弄清楚如何使用不同的前缀 django 创建多个 Modelforms

  27. 27

    如何在 Django ModelForm 中获取实例

  28. 28

    在 Django 中使用不带“def __init__”的“self”实例

  29. 29

    django:基于 ModelForm 字段创建 HTML 警报?

热门标签

归档