码迷,mamicode.com
首页 > 其他好文 > 详细

django2外键

时间:2019-06-02 01:40:37      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:cas   delete   save   field   使用   用户表   hone   作者   ons   

一对多

环境

两个类:书的类别和文章,一片文章只能有一个作者,一个作者可以有多个文章,这之间组成了一对多的关系

class Category(models.Model):
    category = models.CharField(max_length=100)

    def __str__(self):
        return self.category



class Article(models.Model):
    title = models.CharField(max_length=20,verbose_name=书名)
    info = models.TextField(verbose_name=内容)
    author = models.CharField(max_length=10, verbose_name=作者)
    f = models.ForeignKey(to=Category,on_delete=models.CASCADE)#如果不想用article_set这种形式查找,可以使用related_name=‘articles‘,那么在视图one_to_many函数中就可以使用articles = category.articles.all()

添加文章

def add_article(request):
    article = Article(title=钢铁是怎样炼成的,info=不知道,author=疯子)
    article.f = Category.objects.get(id=1)
    article.save()
    return HttpResponse(添加文章成功)

 

通过书的类型查找文章

def one_to_many(request):
    category = Category.objects.first()
    articles = category.article_set.all()#all可以换成filter或者first
    for i in articles:
        print(i.title)
        print(i.author)
        print(i.content)
    return HttpResponse(ok)

 

 

一对一

环境

如果一张表里面字段非常都可以考虑把一张表拆成2张表,这样在查询的时候比在一张表上查询速度快,例子:一个用户表,一个用户扩展信息表,这是一对一个关系,一个用户只能对应一个扩展信息,同样的道理,一个用户扩展信息只能对应一个用户

 

models.py内容

class Users(models.Model):
    name = models.CharField(max_length=10)
    # def __str__(self):
    #     return ‘name:%s‘ % self.name

class Users_Extend(models.Model):
    school = models.CharField(max_length=100)
    telephone = models.CharField(max_length=11)
    extend_info = models.OneToOneField(Users, on_delete=models.CASCADE)

 

view视图

#通过用户查看用户的扩展信息
def
one_to_one(request): # users = Users(name=‘疯子‘) # users.save() # extend = Users_Extend(school=‘交通大学‘,telephone=120) # extend.extend_info_id = 1 # extend.save() extend = Users_Extend.objects.first() print(extend.extend_info.name) return HttpResponse(添加用户成功)

 

view视图

#通过扩展信息查看用户
def one_to_one(request):
    users = Users.objects.first()
    print(users.users_extend)
    return HttpResponse(添加用户成功)

 

django2外键

标签:cas   delete   save   field   使用   用户表   hone   作者   ons   

原文地址:https://www.cnblogs.com/fengzi7314/p/10961576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!