我想混合一个字段到我不想编辑的现有模型中(它来自第三方项目,我宁愿不改变项目)。我创建了一个简单的例子,它说明了我正在尝试但无法执行的操作:混合字段到现有的和不可编辑的Django模型
在一个空的Django项目中,我创建了应用程序app1和app2(它们在设置中按顺序排列)。他们看起来像下面这样:
app1.models.py:
from django.db import models
from app2.models import BlogPost
class BlogPostExtend(models.Model):
custom_field_name = models.CharField(max_length=200)
class Meta:
abstract = True
BlogPost.__bases__ = (BlogPostExtend,)+BlogPost.__bases__ # this prevents MRO error
app2.models.py:
from django.db import models
class BlogPost(models.Model):
field_name = models.CharField(max_length=100)
不幸的是这不会导致custom_field_name在数据库创建时,我syncdb,尽管在命令行输入BlogPost.custom_field_name,但它确实将它识别为CharField。我知道在这种简单的情况下,我可以从BlogPostExtend继承BlogPost,但在实际使用情况下,我无法编辑BlogPost。
这是一个非常简单的例子,但它说明了我正在尝试做什么。
谢谢!
感谢您的答案,它确实有效。我不会接受它,因为我真的想找到一种方法来用mixin来做到这一点,但这可能是唯一的方法。谢谢。 – joshcartme