WED.Django 数据操作及创建表关系

这篇博客详细介绍了Django中对数据的增、查、改、删操作,包括User模型的创建与过滤查询。同时,讲解了如何在前端展示数据并实现编辑和删除功能。此外,还探讨了ORM方式下表间关系的建立,如一对一、一对多和多对多关系,并给出了Book、Publish和Author模型的例子。
摘要由CSDN通过智能技术生成

WED.

Django 数据操作及创建表关系

from app import modles
方式一
res = modles.User.objcets.create(username=username,password=password)
# 返回值就是当前被创建的对象本身
print(res.username, res.password)

方式二
user_obj = modles.User(username=username, password=password)
user_obj.save()

res = models.User.objects.filter(username=username)
  
"""
返回值可以看做是列表套数据对象的格式
支持索引取值、切片操作,但不吃负数索引
推荐使用 .first() 方法
res = models.User.objects.filter(username=username).first()
"""

filter 括号内可携带多个参数
参数与参数之间默认是 and 关系
相当于 MySQL 中的 where

数据的查改删

# 先将数据库的数据展示到前端,然后提供编辑、删除按钮,用以修改数据
def user_list(request):
    user_queryset = models.User.objects.all()
    return render(request, 'user_list.html', locals())  # 查

# 改
# 编辑功能
	- 点击编辑按钮后向后端发送编辑数据的请求
  '''
  如何获取用户想要编辑的数据的信息?
  	- 将用户点击的编辑按钮所在的信息发送给后端
  	- 利用 url '?' 后面可携带参数的格式
  '''
  {% for foo in user_queryset %}
                <tr>
                <td>{{ foo.id }}</td>
                <td>{{ foo.username }}</td>
                <td>{{ foo.password }}</td>
                <td>{{ foo.age }}</td>
                <td>{{ foo.deposit }}</td>
                <td>
                    <a href="/edit/? user_id={{ foo.id }}" class="btn btn-primary btn-group-sm">Edit</a>
                    <a href="" class="btn btn-danger btn-group-sm">Delete</a>
                </td>
                </tr>
                {% endfor %}
  
# 后端获取用户想要编辑的数据对象 展示到前端页面供用户查看和编辑

# 删
"""
  	删除有2种方式:
  		1、物理删除
    	2、软删除
"""
    # 1、物理删除
    delete from user where id = del_id
    models.User.objects.filter(id=del_id).delete()
    
    # 2、软删除
    models.User.objects.filter(id=del_id).update(is_delete=True)

ORM创建表关系

"""
    创建表关系,先创建每张表的基础字段,除了关系字段之外的字段先写好
"""


class Book(models.Model):
    title = models.CharField(max_length=32)
    # price decimal(8,2)
    price = models.DecimalField(max_digits=8, decimal_places=2)

    # 建立一对多关系, 默认跟另外一张表的主键进行关联
    """
    外键关系:
        ForeignKey
        OneToOneField
        自动帮你加上_id,你自己就不要加了
    """
    # publish_id = models.ForeignKey(to='Publish',to_field='a_id')
    publish = models.ForeignKey(to='Publish')

    # 多对多关系
    authors = models.ManyToManyField(to='Author')
    """
    authors是一个虚拟字段,不会创建authors字段
    """


class Publish(models.Model):
    title = models.CharField(max_length=32)
    addr = models.CharField(max_length=32)
    # a_id = models.IntegerField(max_length=32)


class Author(models.Model):
    name = models.CharField(max_length=32)
    # 一对一关系
    detail = models.OneToOneField(to='AuthorDetail')


class AuthorDetail(models.Model):
    phone = models.CharField(max_length=32)
    # email varchar(254)
    email = models.EmailField()


"""
    一对多创建关系:publish = models.ForeignKey(to='Publish')
    多对多:authors = models.ManyToManyField(to='Author')
    一对一:detail = models.OneToOneField(to='AuthorDetail')
""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值