• django contenttype


    下图即为django的contenttype表

    models.py

     1 from django.db import models
     2 from django.contrib.contenttypes.models import ContentType
     3 from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation
     4 
     5 
     6 class PythonBasic(models.Model):
     7     course_name = models.CharField(max_length=32)
     8     coupon = GenericRelation("Coupon")   #  反向查询 通过此字段,类似于 releted_name
     9 class Oop(models.Model):
    10     course_name = models.CharField(max_length=32)
    11     coupon = GenericRelation("Coupon")
    12 class Coupon(models.Model):
    13     coupon_name = models.CharField(max_length=32)
    14     content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) # 与django contenttype表建立外键
    15 
    16     object_id = models.PositiveIntegerField()  # 对应表中的对象id
    17 
    18     content_object = GenericForeignKey('content_type','object_id') # 不会生成列 

    如何查询:

    def get(self, request):
    
        pb = ContentType.objects.filter(app_label="auth",model='user').first() # 与contenttype表字段对应
        pb_model = pb.model_class() # 执行此方法拿到 <class 'django.db.models.base.ModelBase'>
        print(pb_model.objects.all())

    如何创建:

    object_id = PythonBasic.objects.get(pk=1)
    Coupon.objects.create(coupon_name="python优惠卷",content_object = object_id)
  • 相关阅读:
    编程作业4.1:神经网络反向传播(BP算法)
    700. Search in a Binary Search Tree
    671. Second Minimum Node In a Binary Tree
    653. Two Sum IV
    606. Construct String from Binary Tree
    590. N-ary Tree Postorder Traversal
    589. N-ary Tree Preorder Traversal
    617. Merge Two Binary Trees
    SHELL 变量
    egrep 正则表达式
  • 原文地址:https://www.cnblogs.com/lzmdbk/p/10105312.html
Copyright © 2020-2023  润新知