yoyo008
学习过程,参考别人的文章:
先设定一个关系模型如下:
[python] view plain copy
 
  1. from django.db import models  
  2. class Blog(models.Model):  
  3.    name = models.CharField(max_length=100)  
  4.    tagline = models.TextField()  
  5.    def __str__(self):              
  6.        return self.name  
  7.   
  8. class Author(models.Model):  
  9.    name = models.CharField(max_length=50)  
  10.    email = models.EmailField()  
  11.    def __str__(self):             
  12.        return self.name  
  13.    
  14. class Entry(models.Model):  
  15.    blog = models.ForeignKey(Blog)  
  16.    headline = models.CharField(max_length=255)  
  17.    body_text = models.TextField()  
  18.    authors = models.ManyToManyField(Author)  
  19.    def __str__(self):              
  20.       return self.headline  

 

上面的数据关系很明晰,Entry中有Blog和Author的外键

如果要在Entry中读取blog和author的数据很容易:

entry = Entry.objects.all()  

    for e in entry:  

         blog = e.blog  

         author = e.authors  

 

 

如果采用的是vlaue方法取数值(得到字典类型数据),则如下:

 

user_info = models.Entry.objects.\ 
values(\'headline\', \'body_text\',
\'blog__name\',
\'blog__tagline\').first()

 

要在Blog和Author中读取Entry也可以:

 blog = Blog.objects.all()  

 entry = blog.entry_set.all()  

 

 author = Author.objects.all()  

 entry = author.entry_set.all()  

 

下面通过entry使blog和author互相读取,比如要知道一个blog的Author只需如下:

blogs = Blog.objects.all()  

    for blog in blogs:  

        if blog.name== “我们想要查询的博客的name”  

             author = blog. entry_set.authors  

 

要查询一个author的所有blog如下:

authors = Author.objects.all()  

    blogs = []  

    for author in authors:  

        if author.name== “我们想要查询的Author的name”  

            for entry in author.entry_set.all():  

                blogs.append(entry. blog)  

 

如果采用的是vlaue方法取数值,则如下:

user_info = models.UserInfo.objects.\ 
filter(username=username, password=password). \
values(\'nid\', \'nickname\',
\'username\', \'email\',
\'avatar\',
\'blog__nid\',
\'blog__site\').first()

 

 

分类:

技术点:

相关文章: