django--model--orm001-- 增删改查

 app01/models

from django.db import models
class  Student(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    age = models.PositiveIntegerField()
    gender = models.BooleanField()
    email = models.EmailField()迁 

生成迁移文件

python manage.py makemigrations

python manage.py migrate

 查看数据库

1、双击db.sqlite3,点test connection,会自动下载数据库驱动

 2、生成数据库关键字段

 3、打开数据库,字段已存在

  4、查看DDL

 5、插入数据

app01/views 增加数据方法一

def add_student(request):
    name = "zhangsan"
    age = 20
    gender = True
    email= '123456@126.com'
    student_obj = Student(name=name,age=age,gender=gender,email=email)
    student_obj.save()
    return HttpResponse("添加成功")

apo01.urls

from django.urls import path
from . import views
urlpatterns = [
    # path('',views.index),
    path('',views.add_student)
]

djangoproject/urls

from django.urls import path
from app01.views import *
from django.conf.urls import include

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('',include('app01.urls'))
]

 6、增加数据方法二

def add_student(request):
    name = "lisi"
    age = 20
    gender = True
    email= '123456@126.com'
    # student_obj = Student(name=name,age=age,gender=gender,email=email)
    # student_obj.save()
    student_obj = Student.objects.create(name=name,age=age,gender=gender,email=email)
    return HttpResponse("添加成功")

7、增加数据方法三

def add_student(request):
    #name = "lisi"
    #age = 20
    #gender = True
    #email= '123456@126.com'
    #方法一
    # student_obj = Student(name=name,age=age,gender=gender,email=email)
    # student_obj.save()
    #方法二
    #student_obj = Student.objects.create(name=name,age=age,gender=gender,email=email)
    #方法三
    dic={"name":"zhaoliu","age":20,"gender":True,"email":"ffqeerqe@126.com"}
    Student.objects.create(**dic)
    return HttpResponse("添加成功")

 8、查询数据 app01/views

all() 结果集查询所有。 返回QuerySet查询集(可以遍历)

values() 查询所有字段

def select_student(request):
    #all()方法
    student_list=Student.objects.all()
    for i in student_list:
        print("all:",i,i.name)
    #values()方法
    student_list1=Student.objects.values()
    print("values",student_list1)
    return HttpResponse("查询成功")

 9、更新数据 app01/views

def update_student(request):
    Student.objects.filter(id=1).update(name="nihao")
    return HttpResponse("更新成功")

10、删除数据 app01/views

def delete_student(request):
    Student.objects.filter(id=4).delete()
    return HttpResponse("删除成功")

app01/urls

from django.urls import path
from . import views
urlpatterns = [
    # path('',views.index),
    # path('',views.add_student),
    # path('',views.select_student),
    # path('',views.update_student),
    path('',views.delete_student),
]

  

常见问题处理一

报错信息:myapp.Article.tags: (fields.W340) null has no effect on ManyToManyField.

解决方法:tags = models.ManyToManyField("Tag") 不用跟null

常见问题处理二

报错信息:ERRORS:
myapp.Tag.date: (fields.E130) DecimalFields must define a 'decimal_places' attribute.
myapp.Tag.date: (fields.E132) DecimalFields must define a 'max_digits' attribute.

解决方法:DecimalFields字段的“decimal_places(有几位小数) 和 “max_digits(总共有几位数)”

上班求生存,下班求发展
原文地址:https://www.cnblogs.com/ljf520hj/p/11716940.html