如何像在 Django Admin 中一样在表单中创建外键链接字段?

dar*_*rse 5 django django-forms django-admin

在 django admin 中,如果两者之间存在关系,您可以添加、编辑甚至删除另一个模型中的对象。

例如,如果我的代码如下所示:

class Category(models.Model):
    ...

class Product(models.Model):
    ...
    category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)

当我使用 django 管理站点编辑/添加产品时,在类别字段中,我有 3 个按钮来添加/编辑/删除类别。将一个镜头添加到一个新窗口,一旦我提交表单,就会添加类别,关闭窗口,然后我返回到我的产品表单,并显示额外的类别。像这样:

在此处输入图片说明

如何使用表单在我的普通应用程序(管理员之外)中执行此操作?

Lau*_*t S 0

如果我正确理解你的问题,你可以做 django admin 所做的事情,即将按钮链接add到此:

/admin/<your_app>/<your_model>/add/?_to_field=id&_popup=1
Run Code Online (Sandbox Code Playgroud)

然后它使用一些 JavaScript 来取回您刚刚创建的新对象。如果您查看该contrib/admin/static/admin/js/admin/RelatedObjectLookups.js文件(在 django 的代码中),您将看到一些函数,它们将调用字段的 id 传递到弹出窗口(在 中showRelatedObjectPopup),然后返回选定的 id(在 中dismissRelatedLookupPopup)。

这是用于添加新对象,但您可以查看更改/删除的逻辑。

您可以使用自己的表单复制该逻辑。