django项目使用通用外键

时间:2013-02-14 11:45:16

标签: python django

我们有一些插件,如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表中,并以某种方式将它们链接起来。

0 个答案:

没有答案