7.22-7.23 JLL实习日志-ManytoMany模型+python中 reload 函数

来源:互联网 发布:奥特歌词软件 编辑:程序博客网 时间:2024/06/04 17:46
  1. view_company how to get the value of id
    处理ManyToMany 的 数据 模型 的 时候

数据模型 如下

class Brand(models.Model):    Company_Group = models.ManyToManyField(Company)class Company(models.Model):                            Pref_Company_Name_Flg=models.CharField(u'Preferred Name Flag',max_length=255, default="")Pref_Company_Name = models.CharField(u'Preferred Name',max_length=255, default="")

查找 到 所有包含了 company_id 的 brand 对象 ,错误 的版本 如下

brands = Brand.objects.all()company_instance=company.objects.filter(id=company_id)for brand in brands: for i in   Brand.Company_Group.through.objects.filter(Company_Group = brand):    print i.id

报错 信息 如下

Cannot resolve keyword 'Company_Group' into field. Choices are: brand, brand_id, company, company_id, id

错误 解决方式 知识 :
没有理解 ManytoMany组成方式,分为 隐式定义和 显示定义 (双向 or单向 ),我用的是 “单向显示定义”的 形式 ,隐式定义 的 限制 比较多,必须 用它固定的写法 ,显式 定义 更加 灵活,可以 用 filter的 过滤 条件,我 在 brand 这边 定义了 一个 Company_Group 的 显示 定义 ,
从 brand 出发 “显式 定义” 可以 使用下面的 方式 companies=brand_instance.Company_Group.all() 得到 对应 的 所有 的 brand_instance的 对象 ,但是 反向 定义 的时候,需要使用_set.all()
比如 这样子的 方式

company=Company.objects.get(id=company_id)
brand_instances = company_instance.brand_set.all()


  1. 通过用户 自带 的 属性,import不同 的 .py文件 的 时候 需要 使用 重新 加载 的 函数 ,否则 只会 加载 第一个 import文件 ,后面 的 会报错
reload()
原创粉丝点击