美文网首页
关联对象参考

关联对象参考

作者: SingleDiego | 来源:发表于2018-05-21 11:29 被阅读15次

官方文档

关联管理器 是在一对多或者多对多的关联上下文中使用的管理器。它存在于下面两种情况。

ForeignKey 关系中:

from django.db import models

class Reporter(models.Model):
    name = models.CharField(max_length=50)


class Article(models.Model):
    title = models.CharField(max_length=50)
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

在上面的例子中,Django 为我们自动生成了 reporter.article_set 管理器,可以实现子表对母表的关联管理,都将拥有以下方法。

ManyToManyField 关系中:

from django.db import models

class Topping(models.Model):
    food = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class Pizza(models.Model):
    name = models.CharField(max_length=50)
    toppings = models.ManyToManyField(Topping)

    def __str__(self):
        return self.name

这个例子中,topping.pizza_setpizza.toppings 两个管理器都将拥有以下方法。




add(*objs, bulk=True)

添加一指定的模型对象到关联的对象集中。

# ManyToManyField 关系
# 把一个子表对象添加到母表对象的关联中

p = Pizza.objects.get(pk=2)
t = Topping.objects.get(pk=1)
t.pizza_set.add(p)

在上述示例中,在 ForeignKey 关系的情况下,使用 QuerySet.update()
来执行更新。 它要求对象已经被保存,例如:

r = Reporter.objects.get(pk=1)
a = Article.objects.filter(pk=2)
a.update(reporter=r)

create(**kwargs)

# 为子表对象创建一个关联的母表对象 

r = Reporter.objects.get(pk=1)
r.article_set.create(title='文章a')

这等价于:

r = Reporter.objects.get(pk=1)
a = Article(
    title = '文章a',
    reporter = r
    )
a.save(force_insert=True)

remove(*objs)

# 把子表对象从母表对象的关联中移除 

p = Pizza.objects.get(pk=2)
t = Topping.objects.get(pk=1)
t.pizza_set.remove(p)

clear()

# 把子表对象的所有和母表关联移除 
# 现在所有 pizza 都不包含这个 topping

p = Pizza.objects.get(pk=2)
t = Topping.objects.get(pk=1)
t.pizza_set.clear()

set(objs, bulk=True, clear=False)

# 把子表对象同时添加到几个母表对象的关联中
# p2,p3 两个 pizza 对象都会拥有 t 这个 topping

p2 = Pizza.objects.get(pk=2)
p3 = Pizza.objects.get(pk=3)
p_list = [p2, p3]

t = Topping.objects.get(pk=1)
t.pizza_set.set(p_list)

相关文章

  • 关联对象参考

    官方文档 关联管理器 是在一对多或者多对多的关联上下文中使用的管理器。它存在于下面两种情况。 ForeignKey...

  • 关于iOS Class Category的整理

    参考 Category官方指导文档 关联对象 AssociatedObject 完全解析 深入理解Objectiv...

  • 外键

    关联对象参考class RelatedManager"关联管理器"是在一对多或者多对多的关联上下文中使用的管理器。...

  • Swift 为分类增加属性objc_getAssociated

    OC 获取关联对象 Swift 获取关联对象——错误的写法 Swift 获取关联对象——正确的写法 设置关联对象 ...

  • iOS runtime关联对象 objc_setAssociat

    关联对象的作用: 关联对象可以给某个对象关联一个或者多个其他对象,这些对象通过健来区分。 创建存储关联对象objc...

  • 关联对象

    关联对象的方式 关联对象源码基本思路 关联对象的结构:AssociationsHashManager // Ass...

  • 关联对象

    关联对象原理 关联对象并不是存储在被关联对象本身内存中,关联对象存储在全局的统一的一个AssociationsMa...

  • 2021-04-19

    关于oc 关联对象的实现原理 参考文章:https://www.jianshu.com/p/da75ea8224bb

  • iOS 关联对象

    概述 关联对象顾名思义,就是给对象关联对象的意思,一个对象可以关联多个其他对象,这些对象通过key来区分,存储对象...

  • 关联对象

    关联对象会用被关联对象作为key,将关联对象存储到全局的哈希表里。 AssociationHashMap Asso...

网友评论

      本文标题:关联对象参考

      本文链接:https://www.haomeiwen.com/subject/pxtadftx.html