ifdashui

基本的创建一个models.模型

# -*- coding: UTF-8 -*-
from django.db import models

class Author(models.Model):
    "作者模型"
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    email = models.EmailField()

    class Meta:                 #该名称不能更改
        db_table = \'author\'     #映射到数据库中为你自定义的名字,不设置这个默认为  包名_表名 映射到数据库


class Publisher(models.Model):
    "出版社模型"
    name = models.CharField(max_length=300)

    class Meta:
        db_table = \'publisher\'

class Book(models.Model):
    "book模型"
    name = models.CharField(max_length=300)
    pages = models.IntegerField()
    price = models.FloatField()
    rating = models.FloatField()
    author = models.ForeignKey(Author,on_delete = models.CASCADE)
    publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE)

    class Meta:
        db_table = \'book\'


class BookOrder(models.Model):
    "图书订单模型"
    book = models.ForeignKey("Book",on_delete=models.CASCADE)
    price = models.FloatField()

    class Meta:
        db_table = \'book_order\'
from .models import Book
from django.db.models import F
from django.db import connection
Book.objects.update(price=F(\'price\')+10) #直接在数据库上更新Book表下的price字段都在原来的基础上增加,F(\'price\')会获到该该表下所有的price这个字段的值
print(connection.queries[-1])
#这样就可以了,直接在数据库上查看就看到改变了

 

额外 : 获取姓名和邮箱相同的数据

 from .models import Book,Author
   #获取姓名和邮箱相同的数据
    authors = Author.objects.filter(name=F(\'email\')) #注意使用的是filter,也就是这个name是数据库的字段,并不是你自定义的,
                                                      # F(\'email\') 会将email的数据全部拿到,然后找到与name相同的数据,然后返回这些想等的数据
    #输出的话根据上面的输出一样就行了

 

分类:

技术点:

相关文章: