******
Django的contenttype表中存放发的是app名称和模型的对应关系 contentType使用方式 - 导入模块 from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation - 定义models class PythonBasic(models.Model): course_name = models.CharField(max_length=32) class Oop(models.Model): course_name = models.CharField(max_length=32) class Coupon(models.Model): coupon_name = models.CharField(max_length=32) # 关联到contenttype外键,用来存放对应的表的id(在contenttype表中的id) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) # 关联对应的商品的id object_id = models.PositiveIntegerField() # 关联的对象商品 content_object = GenericForeignKey("content_type", "object_id") - 使用 class CourseView(APIView): def get(self, request): pb = ContentType.objects.get(app_label="myapp", model="pythonbasic") # model_class()获取对应的表类 object_id = pb.model_class().objects.get(pk=3) # 其中的关系我们可以使用content_object进行关联,它相当于一个管理器 # 我们将对应的对象给他,他会自动给字段建立关系 # 但是其实我对于它的应用了解还不是很多,如果需要请看django文档 Coupon.objects.create(coupon_name="python通关优惠券", content_object=object_id) return HttpResponse("ok") 总结: 关于它的使用时机,其实就是如果一个模型类与多个类之间都存在外键关系的时候。比如订单表与书籍表以及衣服表,都会产生订单,但是万一还有其他类的商品也要关联订单的时候,我们可以使用,contentType进行关联。其实就是一个万能的中间表,可以关联任何的其他表。
View Code
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:11.关于django的content_type表 - Python技术站