python - 管理员中的Django反向外键

标签 python django django-models django-admin

我在管理面板中有一个关于外键的 Django 相关问题。我面临以下情况:

class Driver(models.Model):
    name = models.CharField(max_length=200)
    executable = models.CharField(max_length=200)

class Device(models.Model):
    name = models.CharField(max_length=200)
    bound_driver = models.ForeignKey(Driver)

class DriverAssignment(models.Model):
    device = models.ForeignKey(Device)
    driver = models.ForeignKey(Driver)

每个设备都需要有一个绑定(bind)的驱动程序(它使用)。 DriverAssignment 应该是显示哪个设备可以使用哪个驱动程序的表格。所以一个设备可以有多种可能的驱动程序可以绑定(bind)。现在我想在我的管理面板上有一个下拉菜单,显示特定设备的所有可能驱动程序以选择“bound_driver”。

我如何在 Django 中执行此操作?对于有经验的 Django 人来说,这可能是一件容易的事。我希望有人能给我提示,因为我是 Django 的新手。多谢!

最佳答案

对于 Django >1.8

使用 InlineModelAdmin (2.2 的文档)如那里所述:

模型.py

from django.db import models

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

class Book(models.Model):
   author = models.ForeignKey(Author, on_delete=models.CASCADE)
   title = models.CharField(max_length=100)

管理员.py

from django.contrib import admin

class BookInline(admin.TabularInline):
    model = Book

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

关于python - 管理员中的Django反向外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428717/

相关文章:

python - ZeroMQ:如何在 .poll() 方法中确定套接字的优先级?

python - Django-Channels -/admin/portal 不显示创建的新模型

django - 使用 Django Rest Framework 实现 MVC 模式

python - 如何存储动态可变数量的对象的顺序(在 python 中)?

python - 当 type(self) 工作正常时,为什么 Loan 未定义?

python - 在 SQLAlchemy 中创建一列 "immutable"

python - 有没有正确的方法来定义 Pyramid 中 Assets 规范的附加包?

python - 创建新的 Conda 环境 --- CondaVerificationError :The package for openssl is corrupted

css - 如何让 liveserver 渲染 django 模板?

html - 选项卡的 li 检查问题