我们有一些插件,如to_small,to_cap,html,text等..
我们可以将任何上述插件用于任何模型中的任何字段
因此,如果'abc'是模型中的一个字段,并且我希望它使用插件,我们可以将其定义为abc = mycustomfield()
因此,在admin中,对于'abc'字段,我们可以使用select框添加任意数量的插件。
如何使用通用外键执行此操作?
我试过的一些代码:
class AbstractPlugin(models.Model):
model_type = models.ForeignKey(ContentType, null=True, blank=True)
model_id = models.PositiveIntegerField(null=True)
m = GenericForeignKey('model_type', 'model_id')
class Meta:
abstract=True
class BasePlugin(AbstractPlugin):
pass
class CapItem(BasePlugin):
cap_text = models.TextField()
def save(some params):
....implemented save method as per my requirement of plugin
class SmallItem(BasePlugin):
....same like above CapItem
下面的模型应该可以使用上面的插件。
class MyModel(models.Model):
name = models.CharField(max_length = 20)
content = CustomField()
对于单个实例,内容字段应该能够使用任意数量的插件。意思是,我们可以为内容字段的SmallItem插件添加'abc ABC'文本。同时,它可以将'pqr PQR'文本添加到CapItem插件中。意思是,无论何时使用capitem插件,都会将记录插入到capitem表中,并以某种方式将它们链接起来。