Django contenttypes组件
Django包含一个contenttypes应用程序(app),可以跟踪Django项目中安装的所有模型(Model),提供用于处理模型的高级通用接口。
生成表结构之后有一个表,包含所有其他表
该组件主要应用于像不同的帖子和不同的照片都有评论,但是想只用一张评论表去存储,评论表中应有一个字段说明属于帖子还是照片,有一个字段说明该评论属于具体哪个帖子、哪个照片。
from django.db import models from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation,ContentType class Post(models.Model):"""帖子表"""title = models.CharField(max_length=72)# 查看一个对象的全部评论用comments,创建时用GenericRelationcomments=GenericRelation('Comment') class Picture(models.Model):"""图片表"""image = models.ImageField()comments = GenericRelation('Comment')class Comment(models.Model):"""评论表"""content = models.TextField()# post = models.ForeignKey(Post, null=True, blank=True, on_delete=models.CASCADE)# picture = models.ForeignKey(Picture, null=True, blank=True, on_delete=models.CASCADE)# 外键关联ContentType(其中有所有的表)content_type=models.ForeignKey(ContentType,on_delete=models.DO_NOTHING)# 关联数据的主键,具体某一行的id(例如具体某一个帖子的id)object_id=models.PositiveSmallIntegerField()# GenericForeignKey字段创建,在数据库中不会存在该字段content_object=GenericForeignKey('content_type','object_id')
models.py
from django.shortcuts import render,HttpResponse from app01 import models from django.contrib.contenttypes.fields import ContentType # Create your views here. def Test(request):# 创建测试数据 方式一# content_type_pic_obj=ContentType.objects.filter(model='picture').first()# picture_obj=models.Picture.objects.filter(id=1).first()# models.Comment.objects.create(content='图片好看2',content_type=content_type_pic_obj,object_id=picture_obj.id)# models.Comment.objects.create(content='图片好看3',content_type=content_type_pic_obj,object_id=picture_obj.id)# models.Comment.objects.create(content='图片好看4',content_type=content_type_pic_obj,object_id=picture_obj.id)# content_type_post_obj = ContentType.objects.filter(model='post').first()# post_obj_1 = models.Post.objects.filter(title='散文1').first()# post_obj_2 = models.Post.objects.filter(title='散文2').first()# models.Comment.objects.create(content='散文写的好', content_type=content_type_post_obj, object_id=post_obj_1.id)# models.Comment.objects.create(content='散文写的好2', content_type=content_type_post_obj, object_id=post_obj_1.id)# models.Comment.objects.create(content='散文写的好3', content_type=content_type_post_obj, object_id=post_obj_2.id)# 创建测试数据方式二# picture_obj = models.Picture.objects.filter(image='default_avatar.jpg').first()# models.Comment.objects.create(content_object=picture_obj,content='图片一般般')# post_obj_1 = models.Post.objects.filter(title='散文1').first()# models.Comment.objects.create(content_object=post_obj_1, content='文章一般般')# 查询一个对象的所有评论comment_list=models.Post.objects.filter(id=1).first().comments.all()print(comment_list)return HttpResponse('...')
views.py
"""django_contenttypes编写models URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.0/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [path('admin/', admin.site.urls),path('test/', views.Test), ]
urls.py
转载于:https://www.cnblogs.com/zhaowei5/p/10446533.html
Django contenttypes组件相关推荐
- 路飞学城python全栈开发_python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)...
昨日内容回顾 1. 为什么要做前后端分离?-前后端交给不同的人来编写,职责划分明确.-API (IOS,安卓,PC,微信小程序...)-vue.js等框架编写前端时,会比之前写jQuery更简单快捷. ...
- Django contenttypes 应用
Django contenttypes 应用 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我们创建 ...
- 一篇文章浅析Django Form组件相关知识
击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 灭烛怜光满,披衣觉露滋. 前言 在上 ...
- Django——stark组件
stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作. 一.配置 1.创建stark应用,在settings.py中注册stark应用 st ...
- markdownpad2 html渲染组件出错_Day68 Django forms组件
目录 forms组件 forms组件类书写 forms组件如何校验数据 forms组件如何渲染标签 forms组件展示错误信息 forms组件钩子函数(HOOK) forms组件常见参数 forms组 ...
- Django ModelForm 组件的应用
ModelForm组件的应用 ModelForm 组件的创建: 1.创建一个类,该类继承 forms.ModelForm 2.大致组成部分 class ModelNameModelForm(form ...
- Django 分页组件替换自定义分页
Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """c ...
- Django admin组件源码流程
admin 组件 Django 自带的用户后台组件 用于用户便携的操作 admin 组件核心 启动 注册 设计url 启动核心代码 每个app 通过 apps.py 扫描 admin.py 文件 并执 ...
- Django分页组件
""" 自定义分页组件de使用 实例: 1.视图函数中 def num_list(request):# 根据需要获取数据库的数据queryset = models.Pre ...
最新文章
- android 共享代码,Android团队成员间的代码共享!(Git+Github版)
- nacos集群的ap cp切换_配置中心Nacos
- 如何使用 git 更新branch到master最新状态
- 挣钱其实是一门学问也一个门道
- 7月25日训练赛签到题HDU1257
- android移动开发慕课版本_Android移动开发基础教程(慕课版)
- Clover 引导 Windows 及 Linux 双系统
- Windows下查看进程及结束进程命令
- 兄弟连Linux笔记
- 为知笔记打不开 ziw 文件问题
- numpy_subtract函数
- IDEA提交git代码,配置文件乱码
- 源发行版 8 需要目标发行版 1.8
- 2022年总结:道阻且长,行则将至
- 访问github网速慢问题
- 魂武者服务器维护,《魂武者》8月16日停机更新公告
- 农业计算机应用论文,计算机应用论文农业中计算机应用科技模式
- openssl 漏洞 修复 教程
- 长江流域土地利用与土地覆盖数据(1985-2020)
- “打死都千万不要进外包”,我在阿里外包测试的两年...