【发布时间】:2019-10-24 10:31:43
【问题描述】:
试图将一些模型作为内联模型放入其他两个模型中会产生一些奇怪的错误(在标题中)。
我有两种订单模式 - 远程和本地。我需要在其中的每一个中插入无限数量的产品。另一个目的是在不同的列表中显示本地和远程订购的产品的完整列表。
第二个目标的解决方案:使用从第一个继承的第二个产品模型及其自己的管理器(对象)。
第一个目标的解决方案:在订单管理类中使用内联,以按顺序添加完全正确的产品(本地产品到本地订单,远程产品到远程订单)。
将本地产品的内联添加到本地购买的管理员效果很好。 但是将远程产品的内联添加到远程订单管理文件的内联字段会返回远程订单管理类的错误:
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 中。 有什么线索吗? 谢谢。
【问题讨论】:
标签: django django-admin