在Django admin“添加”界面中将字段拆分为其组成部分
我正在使用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,
]