标签:class auth 查找 下划线 unicode object sel strong textfield
from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): # __unicode__ on Python 2 return self.name class Author(models.Model): name = models.CharField(max_length=200) email = models.EmailField() def __str__(self): # __unicode__ on Python 2 return self.name class Entry(models.Model): blog = models.ForeignKey(Blog, on_delete=models.CASCADE) headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateField() mod_date = models.DateField() authors = models.ManyToManyField(Author) n_comments = models.IntegerField() n_pingbacks = models.IntegerField() rating = models.IntegerField() def __str__(self): # __unicode__ on Python 2 return self.headline
需要注意多对多的中间表
1.3 创建对象
from blog.models import Blog
这里需要注意 一定要对属性的名字写上 另外save方法有括号
1.3 创建外键对象并保存
这里需要注意 blog是外键 这里只能赋值给一个外键的对象 或者数字1 2 3 4(代表外键的 对方的ID)
e.headline="my2 bolg" e.body_text="test" e.pub_date=datetime.date.today() emod_date=datetime.date.today() e.n_comments=12 e.pingbacks=20 e.eating=10 e.blog=b ##这里需要特别注意 e.save()
e.blog=1 这种写法存疑
1.4 多对多
john = Author.objects.create(name="John") paul = Author.objects.create(name="Paul") george = Author.objects.create(name="George") ringo = Author.objects.create(name="Ringo") e.authors.add(john, paul, george, ringo)
注意这里的对应关系存储在中间表中
2.2 过滤
这里注意 有2个下划线 django的固定语法
>>> Entry.objects.filter(pub_date__year=2019)
<QuerySet [<Entry: my1 bolg>, <Entry: my2 bolg>]>
exclude 排除
过滤的结果都是列表 可以继续链式过滤
这里需要注意 如果查询不到会抛出异常,多余一个也会抛出异常
1.4 外键关联查询
>>> from blog.models import Blog,Entry,Author >>> >>> Entry.objects.filter(blog__name="Beatles Blog1") <QuerySet [<Entry: my1 bolg>]>
这里需要注意 可以通过blog(外键)找到对应的类 然后过滤属性 name="XXX"
反向关联
>>> Blog.objects.filter(entry__headline="my1 bolg") <QuerySet [<Blog: Beatles Blog1>]>
这里一定要注意 filter后面的 是 关联的 类 的小写 名称entry!!!!!!!!
多条件同时反向查询!! 这里一定要注意 返回值是Blog对象 entry只是作为查询的邦族条件
3 F表达式
例如,为了查找comments数目多于pingbacks数目的Entry,可以构造一个F()
对象来引用pingback数目,并在查询中使用该F()对象:
>>> from django.db.models import F >>> Entry.objects.filter(n_comments__gt=F(‘n_pingbacks‘))
标签:class auth 查找 下划线 unicode object sel strong textfield
原文地址:https://www.cnblogs.com/ZFBG/p/11348917.html