管理员中的Django反向外键

Dev*_*kev 4 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)
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能在 Django 中做到这一点?对于有经验的 Django 人来说,这可能是一件容易的事情。我希望有人能给我一个提示,因为我对 Django 有点陌生。非常感谢!

Ris*_*nha 7

对于 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)
Run Code Online (Sandbox Code Playgroud)

管理文件

from django.contrib import admin

class BookInline(admin.TabularInline):
    model = Book

class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]
Run Code Online (Sandbox Code Playgroud)