首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django:如何扩展现有模型

django:如何扩展现有模型
EN

Stack Overflow用户
提问于 2011-04-21 07:51:53
回答 1查看 2.9K关注 0票数 3

有很多例子告诉您如何扩展用户模型,但我无法找到一个真实、完整和文档化的示例,说明如何在不遵循“用户配置文件模式”的情况下扩展现有模型(老实说,我不知道为什么)。

简而言之,我的用例如下:我需要扩展django-lfs的产品模型。

在LFS中这样注册(在lfs.catalog.admin中):

代码语言:javascript
复制
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已经注册’%。名称)

所以,有人建议我必须注销那个对象并注册我的。

我就是这样做的:

代码语言:javascript
复制
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)

这次没有错误,但是没有任何变化,我的自定义字段在任何地方都看不到。

有什么暗示吗?

EN

回答 1

Stack Overflow用户

发布于 2011-04-21 08:08:42

困难的原因是因为对象-关系阻抗失配 (爱这个短语)。对象和类并不能很好地映射到关系数据库上:像Django这样的ORMs试图平滑边缘,但是有些地方的差异太大了。继承就是其中之一:根本没有办法使一个表“继承”另一个表,因此必须通过Foreign或类似的方法来模拟它。

无论如何,对于您的实际问题,我不太清楚正在发生什么,但是修复它的一种可能的方法是将ProductAdmin子类化,并特别将model属性设置为您的子类模型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5741133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档