7.连表操作

利用双下划线和 _set 将表之间的操作连接起来

一、数据表结构

from django.db import models

   

class UserProfile(models.Model):

        user_info = models.OneToOneField('UserInfo',on_delete=None)

        username = models.CharField(max_length=64)

        password = models.CharField(max_length=64)

   

        def __str__(self):

                return self.username

   

class UserInfo(models.Model):

        user_type_choice = (

                (0, u'普通用户'),

                (1, u'高级用户'),

        )

        user_type = models.IntegerField(choices=user_type_choice)

        name = models.CharField(max_length=32)

        email = models.CharField(max_length=32)

        address = models.CharField(max_length=128)

   

        def __str__(self):

                return self.name

   

class UserGroup(models.Model):

        caption = models.CharField(max_length=64)

   

        user_info = models.ManyToManyField('UserInfo')

   

        def __str__(self):

                return self.caption

   

class Host(models.Model):

        hostname = models.CharField(max_length=64)

        ip = models.GenericIPAddressField()

        user_group = models.ForeignKey('UserGroup')

   

        def __str__(self):

                return self.hostname

   

二、一对一查询

user_info_obj = models.UserInfo.objects.filter(id=1).first()

print(user_info_obj.user_type)

print(user_info_obj.get_user_type_display())

print(user_info_obj.userprofile.password) #这里userprofile是小写。因为在数据库中全部是小写

   

user_info_obj = models.UserInfo.objects.filter(id=1).values('email', 'userprofile__username').first()

print(user_info_obj.keys())

print(user_info_obj.values())

   

三、一对多查询

类似一对一
1
、搜索条件使用 __ 连接
2
、获取值时使用 . 连接

   

四、多对多操作

   

   

   

   

   

转载于:https://www.cnblogs.com/liuqianli/p/8975561.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值