在Django admin“添加”界面中将字段拆分为其组成部分

1 投票
1 回答
635 浏览
提问于 2025-04-18 05:47

我正在使用Django 1.6。在我某个模型的“添加”界面中,有一个字段是指向另一个模型的外键。因此,它显示为一个下拉框,里面包含第二个模型的字符串表示。我想把这个下拉框拆分成它的组成字段,可以做到吗?

举个例子,在我“添加”用户模型的界面中,有一个字段叫“最喜欢的书”。“书”这个字段显示为一个下拉菜单,里面有所有书籍的“标题”和“作者”的字符串表示。我想把它改成两个下拉菜单,分别用于选择“标题”和“作者”。

编辑
这并不是我实际应用的情况。在我的应用中,还有一个额外的功能,就是所有的作者-标题组合都是可能的(显然这个例子并不完全符合这个情况),所以能够分别选择“标题”和“作者”会非常有用,而不是从一个包含所有可能组合的大下拉菜单中选择。

1 个回答

0

你说的这些其实不太对。外键下拉菜单显示的是你数据库里所有的 Book 对象,它让你可以在 User 和你选择的特定 Book 之间建立关系,也就是说,你可以选择某个特定的书名和作者组合。你不能单独选择书名和作者,因为它们都是同一个 Book 的字段,代表的是那本特定的书(更不用说书名是一个文本字段了)。

你可以使用 Django 管理后台的内联功能。你可以在 这个问题中看到内联的例子:

在这里输入图片描述

这样的话,你就可以在同一个管理页面里将多个 Books 关联到一个 User

# models.py
from django.db import models

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

class Book(models.Model):
   user = models.ForeignKey(User)
   title = models.CharField(max_length=100)

# admin.py
from django.contrib import admin

class BookInline(admin.StackedInline):
    model = Book

class UserInline(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

撰写回答