带有内联的 Django admin,1 个带有 2 个外键的模型到 2 个不同的模型

Django admin with inlines, 1 model with 2 foreigns keys to 2 different models

我总共有3个模型。我的主模型有 2 个外键到 2 个不同的模型。所以关系被设置为多对一。当我尝试自定义管理员时,我无法让它简单地允许我编辑主要角色模型并显示 2 个内联(宇宙和系列)。

最简单的方法是什么?由于 2 个外国领域正在抛弃一切,因此存在一些歧义。我已经搜索了文档,但我一定遗漏了一些东西;我在管理员中得到了一个更复杂的多对多工作,所以这有点奇怪。

这是我的模型:

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

    def __unicode__(self):
        return self.name


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

    def __unicode__(self):
        return self.name


class Character(models.Model):
    name = models.CharField(max_length=200) 
    rating = models.DecimalField(max_digits=3, decimal_places=1)
    universe = models.ForeignKey(CharacterUniverse)    
    series = models.ForeignKey(CharacterSeries)

    def __unicode__(self):
        return self.name

这是我的管理员:

from django.contrib import admin
from .models import Character, CharacterUniverse, CharacterSeries

# Register your models here.


class SeriesInline(admin.TabularInline):
    model = Character

class UniverseInline(admin.TabularInline):
    model = Character

class Characterdmin(admin.ModelAdmin):
    inlines = [
        UniverseInline,
        SeriesInline,
   ]

admin.site.register(Character, CharacterAdmin)   

更新

我之前发布的代码错误!我没有仔细阅读您的模型。抱歉。

如果您想在 create/edit 和 Character 的同时创建 CharacterSeriesCharacterUniverse,您可以这样做:

from django.contrib import admin
from .models import Character, CharacterUniverse, CharacterSeries

# No need to define `ModelAdmin` classes

admin.site.register(Character)
admin.site.register(CharacterUniverse)
admin.site.register(CharacterSeries)

上面的代码会在 universeseries 字段后给你一个 +(加号)。这将帮助您即时创建 CharacterUniverseCharacterSeries 对象