gpt4 book ai didi

python - Django (admin.e104) 必须继承自 'InlineModelAdmin'

转载 作者:行者123 更新时间:2023-12-03 01:41:28 25 4
gpt4 key购买 nike

尝试将某些模型作为内联模型放入其他两个模型中会出现一些奇怪的错误(在标题中)。

我有两种订单模型 - 远程和本地。在每个项目中,我都需要插入无限数量的产品。另一个目标是在不同列表中显示本地和远程订购的产品的完整列表。

第二个目标的解决方案:使用从第一个继承的产品的第二个模型及其自己的管理器(对象)。

第一个目标的解决方案:在订单管理类中使用内联,以便按顺序附加完全正确的产品(本地产品到本地订单,远程产品到远程订单)。

将本地产品内联添加到本地购买管理中效果很好。但是,将远程产品的内联添加到远程订单的管理文件的内联字段中,会导致远程订单的管理类返回错误:

must inherit from 'InlineModelAdmin'.

即使从本地订单的管理文件中删除内联后,它也会返回错误。

像这样的一些代码在 models.py 中:

class RemotePurchaseModel(models.Model):
title = models.CharField
number = models.IntegerField
...

class LocalPurchaseModel(models.Model):
title = models.CharField
number = models.IntegerField
...

class LocalProductModel(models.Model):
remote = models.BooleanField(default=False)
actual_order = models.ForeignKey(to=LocalPurchaseModel, blank=True, null=True)
remote_purchase = models.ForeignKey(to=RemotePurchaseModel, blank=True, null=True)
...

class RemoteProductManager(djando.db.models.Manager):
def get_queryset(self):
return super(PurchasedProductManager, self).get_queryset().filter(remote=True)

class RemoteProductModel(LocalProduct):
proxy = True
objects = RemoteProductManager
...

...

在admin.py

from .models import LocalProductModel
from .models import RemoteProductModel
from .models import LocalPurchaseModel
from .models import RemotePurchaseModel
from django.contrib import admin

class LocalProductInline(admin.StackedInline):
model = LocalProductModel
extra = 1

class RemoteProductInline(admin.StackedInline):
model = RemoteProductModel
extra = 1

class LocalPurchaseAdmin(admin.ModelAdmin):
list_display = ...
fields = ...
inlines = (LocalProductInline, )

class RemotePurchaseAdmin(admin.ModelAdmin):
list_display = ...
fields = ...
inlines = (RemoteProductInline, )

...
admin.site.register(LocalPurchaseModel, LocalPurchaseAdmin)
admin.site.register(RemotePurchaseModel, RemotePurchaseAdmin)

这种变化的原因是在管理端本地和远程产品的两个显示不同的字段集。当然,所有字段都存在于 LocalProductModel 中。有什么线索吗?

最佳答案

我的愚蠢错误是我将内联类名称放在引号内。

而不是:

class MyAdmin(admin.ModelAdmin):
inlines = [MyInlineAdmin]

它是:

class MyAdmin(admin.ModelAdmin):
inlines = ['MyInlineAdmin']

总成本:

  • 2 小时
  • 笔记本电脑屏幕上有一些划痕
  • 今天海里游泳的次数减少了

关于python - Django (admin.e104) 必须继承自 'InlineModelAdmin',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56519352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com