Django Model

  • Django Model 多表查询

示例:

from django.db import models

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    authors = models.ManyToManyField(Author)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()
    n_comments = models.IntegerField()
    n_pingbacks = models.IntegerField()
    rating = models.IntegerField()
  •  class ForeignKey

ForeignKey字段接受一个Model类作为参数, 类型与被参照的字段完全相同:

blog = models.ForeignKey(Blog)
  • ForeignKey.to_field

关联到的关联对象的字段名称。默认地,Django 使用关联对象的主键。

blog = models.ForeignKey(Blog, to_field=Blog.name)
  • ForeignKey.db_constraint

Django Model的ForeignKey字段的主要功能是维护一个一对多的关系, 以进行关联查询.

只有在db_constraint=True时Django model才会在数据库上建立外键约束, 在该值为False时不建立约束.

默认db_constraint=True.

  • MantToManyField
  • 基本操作

models.Tb1.objects.create(c1='aa', c2='bb') #增加一条数据可以接受字典类型数据 **kwargs

obj = models.Tb1(c1='aa', c2='bb')
obj.save()

dic = {'c1':'aa', 'c2':'bb'}
models.Tb1.objects.create(**dic) #Form的产出结果是一个字典,可以根据这个Form的字典和**直接在数据库创建数据
models.Tb1.objects.get(id=123)  #获取单条数据,不存在报错(不建议)

models.Tb1.objects.all()  #获取全部   .first() #获取第一条数据

models.Tb1.objects.filter(name='Jeffrey') #获取指定条件的数据 有可以用**的方式传递参数
models.Tb1.objects.filter(name='Jeffrey').delete()
models.Tb1.objects.filter(name='Jeffrey').update(age='20') #将指定条件数据更新,均支持 **kwargs

obj = models.Tb1.objects.get(id=1)
obj.c1 ='cc'
obj.save() #修改单条数据
原文地址:https://www.cnblogs.com/dear_diary/p/5885125.html