有很多例子告诉您如何扩展用户模型,但我无法找到一个真实、完整和文档化的示例,说明如何在不遵循“用户配置文件模式”的情况下扩展现有模型(老实说,我不知道为什么)。
简而言之,我的用例如下:我需要扩展django-lfs的产品模型。
在LFS中这样注册(在lfs.catalog.admin中):
from django.contrib import admin
[...]
from lfs.catalog.models import Product
[...]
class ProductAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("name", )}
admin.site.register(Product, ProductAdmin)
[...]我试图注册我的(它的子类),但我得到了:
django/cont肋骨/admin/sites.py“,第78行,在寄存器中引发AlreadyRegistered(‘模型%s已经注册’%。名称)
所以,有人建议我必须注销那个对象并注册我的。
我就是这样做的:
from lfs.catalog.models import Product
from lfs.catalog.admin import ProductAdmin
admin.site.unregister(Product)
from lfs_product_highlights.catalog.models import Product
admin.site.register(Product,ProductAdmin)这次没有错误,但是没有任何变化,我的自定义字段在任何地方都看不到。
有什么暗示吗?
发布于 2011-04-21 08:08:42
困难的原因是因为对象-关系阻抗失配 (爱这个短语)。对象和类并不能很好地映射到关系数据库上:像Django这样的ORMs试图平滑边缘,但是有些地方的差异太大了。继承就是其中之一:根本没有办法使一个表“继承”另一个表,因此必须通过Foreign或类似的方法来模拟它。
无论如何,对于您的实际问题,我不太清楚正在发生什么,但是修复它的一种可能的方法是将ProductAdmin子类化,并特别将model属性设置为您的子类模型。
https://stackoverflow.com/questions/5741133
复制相似问题