Django数据库--一对多表操作

商品模型和商品类型一对多的关系
一种类型有多个商品
一种商品属于一个类型
创建模型
一对多使用ForeignKey 创建关系

建表

class GoodsType(models.Model):
    """
    商品类型
    """
    t_name = models.CharField(max_length=32,verbose_name="类型名字")
    t_desc = models.TextField(verbose_name="类型描述")
    class Meta:
        db_table = "goods_type"

class Goods(models.Model):
    """
    商品模型
    """
    goods_name = models.CharField(max_length=32,verbose_name="商品名字")
    goods_num = models.IntegerField(verbose_name="商品数量")
    goods_price = models.FloatField(verbose_name="商品单价")
    goods_type = models.ForeignKey(to=GoodsType,on_delete=models.CASCADE)
    class Meta:
        db_table = "goods"

(一)增加

增加类型

 # goods_type = GoodsType.objects.create(
    #     t_name="水果",
    #     t_desc="水果"
    # )

增加商品

 增加商品
    goods=Goods()
    goods.goods_name = "西瓜"
    goods.goods_num = 19
    goods.goods_price = 10.10
    # 第一种
    goods.goods_type_id = goods_type.id # 关联表的id
    goods.save()

 goods_type = GoodsType.objects.filter(t_name="水果").first()
    goods = Goods()
    goods.goods_name = "香蕉"
    goods.goods_num = 10
    goods.goods_price = 100
    goods.goods_type = goods_type# 对象
    goods.save()

(二)查询

  # 查询
    # 正向
    # 从 Goods -》 GoodsType
    # 查询 香蕉的类型
    goods = Goods.objects.filter(goods_name="香蕉").first()
    goods_type = goods.goods_type
    print(goods_type.t_name)
    # 反向
    # 从 GoodsType -> goods
    #查询 水果类型下的商品
    goods_type= GoodsType.objects.filter(t_name="水果").first()
    goods = goods_type.goods_set.all().values("goods_name")    # 关联模型类名小写_set
    goods = goods_type.goods_set.first().goods_name    # 关联模型类名小写_set

    print(goods)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。