把任何事和任何事联系起来
django-generic-m2m的Python项目详细描述
把任何事和任何事联系起来。下图是example app的屏幕截图 并显示了一篇与2个“Place”模型和一个“City”模型“相关”的博客文章:
检查documentation是否 更多的例子和对应用程序的深入描述(或者继续阅读 30秒版本)。
它的功能
此项目的目的是允许您创建数据库级别 使用一致api的各种对象之间的关系。
示例应用程序
与源代码捆绑在一起的是一个示例应用程序,它显示了generic-m2m 可用于在模型之间创建“标记”。它使用nathanborror’s basic apps 用django-completion(无耻的插头) 允许用户“自动完成”模型之间的各种关系,因此如果 一个用户,想要创建一个新的博客文章,我可以用它来标记 与代表一个城市、一个地方、一张有趣的猫照片等的物体的关系。
快速概述
假设您有两个型号:
class Food(models.Model): name = models.CharField(max_length=255) related = RelatedObjectsDescriptor() def __unicode__(self): return self.name class Beverage(models.Model): name = models.CharField(max_length=255) related = RelatedObjectsDescriptor() def __unicode__(self): return self.name
下面是一个示例交互式解释器会话,显示基本的api:
>>> pizza = Food.objects.create(name='pizza') >>> pepperoni = Food.objects.create(name='pepperoni') >>> beer = Beverage.objects.create(name='beer') >>> soda = Beverage.objects.create(name='soda') >>> pizza.related.connect(pepperoni) <RelatedObject: pizza related to pepperoni ("")> >>> pizza.related.connect(beer) <RelatedObject: pizza related to beer ("")> >>> pepperoni.related.related_to() [<RelatedObject: pizza related to pepperoni ("")>] >>> pizza.related.all() [<RelatedObject: pizza related to beer ("")>, <RelatedObject: pizza related to pepperoni ("")>] >>> pizza.related.all().generic_objects() [<Beverage: beer>, <Food: pepperoni>] >>> Food.related.all() [<RelatedObject: pizza related to beer ("")>, <RelatedObject: pizza related to pepperoni ("")>]