有很多例子告诉你如何扩展用户模型但我找不到一个关于如何扩展现有模型的真实,完整和文档化的例子,而不必遵循“用户配置文件模式”(老实说,我想知道原因)。
简而言之,我的用例如下:我需要扩展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 /了contrib /管理/ 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)
这次没有错误但是没有变化,我的自定义字段无处可见。
任何提示?
答案 0 :(得分:2)
之所以困难,是因为object-relational impedance mismatch(喜欢这句话)。对象和类不完美地映射到关系数据库:像Django这样的ORM尝试平滑边缘,但有些地方差异太大了。继承就是其中之一:根本没有办法让一个表“继承”另一个表,所以它必须通过外键等模拟。
无论如何,对于你的实际问题,我无法真正看到发生了什么,但一种可能的解决方法是将ProductAdmin子类化,并专门将model
属性设置为子类模型。 / p>