Django:没有外键的admin.StackedInline

Mik*_*ike 4 django django-admin mongodb

我在admin.py中有以下内容

class AdInline(admin.StackedInline):
    model = Ad

class UnitAdmin(admin.ModelAdmin):
    fields = ('user', 'name', 'about', 'url', 'active', 'type')
    list_display = ('user', 'name', 'url', 'created', 'active', 'type')

    inlines = [AdInline]

class AdAdmin(admin.ModelAdmin):
    fields = ('user', 'title', 'about', 'url', 'active')
    list_display = ('user', 'title', 'url', 'created', 'active', 'clicks')
Run Code Online (Sandbox Code Playgroud)

现在这是在mongodb完成所以我不想要关系..但我希望管理员工作..当我尝试加载一个单位时,我得到以下错误

Exception Value:    <class 'ad.models.Ad'> has no ForeignKey to <class 'ad.models.Unit'>
Run Code Online (Sandbox Code Playgroud)

广告没有外国钥匙.我希望所有广告都作为mongodb中的字典存在于单元内.我只想利用django admin的强大功能来创建它们.

任何指针?

Tim*_*ony 5

您的内联必须拥有要包含在其中的模型的外键,即您的广告需要您的单位的外键; 这是它的工作方式.如果您无法表示该关系,则无法使用内联.我不确定什么可以在管理员中复制这种行为,但我认为内联不符合要求.

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

  • 遗憾的是,这是不可能的.我可以很容易地想象模型A实际上没有内联模型B的外键的情况,但是可以使用A的字段/方法通过重写的"InlineModelAdmin"的`get_queryset()`来提供B的`QuerySet`. . (11认同)