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() #修改单条数据