首页 > 技术文章 > DjangoORM基本增删改查

cansun 2018-03-25 21:27 原文

DjangoORM基本增删改查
UserInfo为创建的app文件夹中models.py文件夹中自己创建的一个类
from django.db import models
class UserInfo(models.Model):
#用户名,字符串类型,指定长度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
#创建
方式:
1.models.UserInfo.objects.create(username="root",passwordd="123")
2.dic = {"username":"aric","password":"123"}
models.UserInfo.objects.create(**dic)
3.obj = models.UserInfo(username="root",passwordd="123")
obj.save()

#查找
方式:
1.result = models.UserInfo.objects.all()#查找所有
2.result = models.UserInfo.objects.filter(username="root")

for row in result:
print(row.id,row.username,row.password)

删除
1.models.UserInfo.objects.filter(username="aric").delete
2.models.UserInfo.objects.all().delete

更新
1.models.UserInfo.objects.filter(username="aric").update(password="666")
2.models.UserInfo.objects.all().update(password="666")

外键
class UserType(models.Model):
caption = models.CharField(max_length=32)
class User(models.Model):
age = models.IntergerField()
name = models.CharField(max_length=10)
user_type = models.ForeignKey("UserType",to_field="id")#to_field参数表示和表中哪个字段创建外键关系,如果不指定to_filed,默认则是与主键建立外键关系


一对多块表操作的三种方式
def host(request):
v1 = models.Host.objects.filter(nid__gt=0)
for row in v1:
print(row.nid, row.hostname, row.ip, row.port, row.b_id, row.b.caption, row.b.code, row.b.id)
v2 = models.Host.objects.filter(nid__gt=0).values("nid", "hostname", "b_id", "b__caption") # 跨表查找需要用双下划线
for row in v2:
print(row["nid"], row["hostname"], row["b_id"], row["b__caption"])
v3 = models.Host.objects.filter(nid__gt=0).values_list("nid", "hostname", "b_id", "b__caption") # 跨表查找需要用双下划线
# for row in v2:
# print(row[0], row[1], row[2], row[3])

return render(request, "host.html", {"v1": v1, "v2": v2,"v3":v3})

      

      

 

 


推荐阅读