Django中的一对多关系

1 投票
1 回答
914 浏览
提问于 2025-04-16 06:48

我正在尝试在Django中创建一个一对多的关系。在我的例子中,我有一篇新闻帖子,它可能会有几张相关的图片。不过,不同的新闻帖子之间不会共享图片。

根据我的观察,有两种方法可以实现这个功能:一种是使用ManyToManyField,这会在管理面板中创建一个多选工具,显示所有上传过的图片;另一种是通过在PostImage类中使用ForeignKeyField,这样在管理面板创建新新闻帖子时就没有添加新图片的选项了。

因为管理面板的用户并不懂技术,所以我希望能做到两件事,如果可能的话:

  • 在“创建新新闻帖子”页面上添加多张图片,而不让他们看到其他新闻帖子的图片选项
  • 其次,能否把多选框换成复选框,或者其他更简单的选择方式,避免使用多选框。

我该如何实现这个目标呢?

1 个回答

3

第二部分比较简单:

你想要的是一个水平的JavaScript过滤器

如果你使用的是ManyToManyField(多对多字段),你可以通过自定义管理器来过滤这些选项。

如果你使用的是ForeignKey(外键),那么你可以使用管理内联。如果你真的从来不重复使用图片,那就用内联吧。

撰写回答