django orm操作2的练习源码内容

1.更改setting文件的db配置

DATABASES={
    'default':{
        'ENGINE':'django.db.backends.mysql',
        'NAME':'s17',
        'USER':'root',
        'PASSWORD':' ',
        'HOST':'172.21.120.248',
        'PORT':'3306',
    }
}
项目下__init__.py驱动配置

import pymysql

pymysql.install_as_MySQLdb()



更改setting配置转sql语句的log配置


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}


urls.py配置内容

"""s17day17 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^addArticle2/', views.addArticle2,name='addArticle2'),
    url(r'^show/', views.show, name='show'),
    url(r'^edit/', views.edit, name='edit'),
]

views内容

from django.shortcuts import render,HttpResponse

# Create your views here.
from app01.models import *
def addArticle2(request):
    #方法一 直接操作库
    # Book.objects.create(id=1,title='python',publication_date='2017-03-04',price='11.15',publisher_id=1)
    #方法二 先查询再操作
    # p1=Publisher.objects.get(name='人大出版社')
    # Book.objects.create(id=3,title='python3',publication_date='2017-05-04',price=98.2,publisher=p1)
    # return HttpResponse('sucess')
#--------------------------------------------------------------------------------------
    '''多对多的添加如下'''
    # Book.objects.get(title='python3')
    book_obj=Book.objects.filter(title='python3').first()   #.first获得对象 默认是集合  或者.[0]
    # print('======>',book_obj.authors)#所有作者的集合对象
    # author_obj1=Author.objects.get(id=1)
    # author_obj2=Author.objects.get(id=2)
    # book_obj.authors.add(author_obj1,author_obj2) #将上述的结果的对应关系放到第三张表中
    #book_obj.authors.remove(author_obj1, author_obj2)   #删除

    #*号的使用
    authors_all=Author.objects.all()
    # book_obj.authors.remove(*[author_obj1,author_obj2])
    book_obj.authors.remove(*authors_all)

    return HttpResponse('sucess')


def show(request):
    book_list=Book.objects.all()

    #value的使用 结果不是对象 而是对象的某个字段或属性 结果也为querySet
    ret1=Book.objects.values('title')
    ret1_list = Book.objects.values_list('title')
    print('ret1 is : ',ret1)        #结果是:ret1 is :  <QuerySet [{'title': 'python'}, {'title': '西游记'}, {'title': 'python3'}]>
    print(ret1_list)                 #结果为querySet里的列表<QuerySet [('python',), ('西游记',), ('python3',)]>
    return render(request,'dateshow.html',locals())

def edit(request):
    # Book.objects.filter(id=2).update(title='红楼梦')         #效率更高
    b=Book.objects.filter(id=2).first()
    b.title='西游记'
    b.save()
    return HttpResponse('编辑成功')


models.py的内容

from django.db import models


# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)


class Book(models.Model):
    title = models.CharField(max_length=100)
    publication_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2, default=10)
    authors=models.ManyToManyField("Author")      #多对多如果表在下方则需要加引号
    publisher = models.ForeignKey(Publisher)    #django存储的是django_id    一对多

    #返回对象的属性
    def __str__(self):
        return self.title

#多对多表添加:
class Author(models.Model):
    name=models.CharField(max_length=30)
    def __str__(self):
        return self.name




猜你喜欢

转载自blog.csdn.net/wuxingpu5/article/details/77949248