https://blog.csdn.net/aaronthon/article/details/81714496python
这篇文章已经很是详细了,供本身之后忘了...回看......spa
总结: .net
当一张表和多个表FK关联,而且多个FK中只能选择其中一个或其中n个时,能够利用contenttype,固定用三个字段 对象
content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE) # 关联course or degree_course object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') # obj.content_object获取关联对象
price_policy = GenericRelation("PricePolicy") # GenericForeignKey反向查询,不会生成表字段 obj.price_policy.all()获取全部关联对象
实际用法blog
from .models import PricePolicy p=PricePolicy.objects.get(pk=1) p.content_object <Course: 英语基础(付费)> from .models import Course c=Course.objects.get(pk=1) c.price_policy.all() <QuerySet [<PricePolicy: 英语基础(付费)(2周)100.0>, <PricePolicy: 英语基础(付费)(1个月)200.0>, <PricePolicy: 英语基础(付费)(2个月)300.0>]>