日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django ORM 操作

發(fā)布時(shí)間:2024/6/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django ORM 操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ORM操作
select * from tb where id > 1
# 對(duì)應(yīng)關(guān)系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1)

創(chuàng)建類

a. 先寫類
from django.db import models

# app01_userinfo
class UserInfo(models.Model):
# id列,自增,主鍵
# 用戶名列,字符串類型,指定長(zhǎng)度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)

b. 注冊(cè)APP

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
c. 執(zhí)行命令
python manage.py makemigrations
python manage.py migrate

d. ********** 注意 ***********
Django默認(rèn)使用MySQLdb模塊鏈接MySQL
主動(dòng)修改為pymysql,在project同名文件夾下的__init__文件中添加如下代碼即可:
import pymysql
pymysql.install_as_MySQLdb()

1. 根據(jù)類自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表
# app下的models.py

python manage.py makemigrations
python manage.py migrate


字段:
字符串類型


數(shù)字


時(shí)間


二進(jìn)制

自增(primary_key=True)

字段的參數(shù):
null -> db是否可以為空
default -> 默認(rèn)值
primary_key -> 主鍵
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now -> 創(chuàng)建時(shí),自動(dòng)生成時(shí)間
auto_now_add -> 更新時(shí),自動(dòng)更新為當(dāng)前時(shí)間

# obj = UserGroup.objects.filter(id=1).update(caption='CEO')
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save()

choices -> django admin中顯示下拉框,避免連表查詢
blank -> django admin是否可以為空
verbose_name -> django admin顯示字段中文
editable -> django admin是否可以被編輯
error_messages -> 錯(cuò)誤信息欠
help_text -> django admin提示
validators -> django form ,自定義錯(cuò)誤信息(欠)


創(chuàng)建 Django 用戶:python manage.py createsuperuser




2. 根據(jù)類對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行各種操作

一對(duì)多:

a. 外檢
b.
外鍵字段_id
c.
models.tb.object.create(name='root', user_group_id=1)

d.

userlist = models.tb.object.all()
for row in userlist:
row.id
row.user_group_id
row.user_group.caption

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

a. 創(chuàng)建類和字段
class User(models.Model):
age = models.IntergerFiled()
name = models.CharField(max_length=10)#字符長(zhǎng)度

Python manage.py makemigrations
python manage.py migrate

# settings.py 注冊(cè)APP

b. 操作
王賽鵬


models.User.objects.create(name='qianxiaohu',age=18)
dic = {'name': 'xx', 'age': 19}
models.User.objects.create(**dic)


obj = models.User(name='qianxiaohu',age=18)
obj.save()

models.User.objects.filter(id=1).delete()

models.User.objects.filter(id__gt=1).update(name='alex',age=84)
dic = {'name': 'xx', 'age': 19}
models.User.objects.filter(id__gt=1).update(**dic)

models.User.objects.filter(id=1,name='root')
models.User.objects.filter(id__gt=1,name='root')
models.User.objects.filter(id__lt=1)
models.User.objects.filter(id__gte=1)
models.User.objects.filter(id__lte=1)

models.User.objects.filter(id=1,name='root')
dic = {'name': 'xx', 'age__gt': 19}
models.User.objects.filter(**dic)

v1 = models.Business.objects.all()
# QuerySet ,內(nèi)部元素都是對(duì)象

# QuerySet ,內(nèi)部元素都是字典
v2 = models.Business.objects.all().values('id','caption')
# QuerySet ,內(nèi)部元素都是元組
v3 = models.Business.objects.all().values_list('id','caption')

# 獲取到的一個(gè)對(duì)象,如果不存在就報(bào)錯(cuò)
models.Business.objects.get(id=1)
對(duì)象或者None = models.Business.objects.filter(id=1).first()


外鍵:
v = models.Host.objects.filter(nid__gt=0)
v[0].b.caption ----> 通過.進(jìn)行跨表






外鍵:
class UserType(models.Model):
caption = models.CharField(max_length=32)
id caption
# 1,普通用戶
# 2,VIP用戶
# 3, 游客

class User(models.Model):
age = models.IntergerFiled()
name = models.CharField(max_length=10)#字符長(zhǎng)度
# user_type_id = models.IntergerFiled() # 約束,
user_type = models.ForeignKey("UserType",to_field='id') # 約束,

name age user_type_id
# 張揚(yáng) 18 3
# 張A揚(yáng) 18 2
# 張B揚(yáng) 18 2

轉(zhuǎn)載于:https://www.cnblogs.com/topzhao/p/9297054.html

總結(jié)

以上是生活随笔為你收集整理的django ORM 操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。