表级操作和记录级操作有什么区别?

时间:2016-08-28 00:41:27

标签: python django database django-models

在浏览django的文档以获得详细的知识时,我忍受了“表级操作”和“记录级别操作”这个词。他们之间有什么区别?有人可以用例子向我解释这两个字吗?他们也有其他名字吗?

P.S我不是因为我觉得他们是相同的而是问他们的区别,但我觉得理解这种方式会更清楚。

2 个答案:

答案 0 :(得分:2)

在Django的上下文中,记录级操作是单个记录上的操作。例如,在模型中定义自定义方法时:

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    birth_date = models.DateField()

    def baby_boomer_status(self):
        "Returns the person's baby-boomer status."
        import datetime
        if self.birth_date < datetime.date(1945, 8, 1):
            return "Pre-boomer"
        elif self.birth_date < datetime.date(1965, 1, 1):
            return "Baby boomer"
        else:
            return "Post-boomer"

表级操作是对一组记录起作用的操作,当您为类定义ModelManager时,这些操作就是一个例子:

# First, define the Manager subclass.
class DahlBookManager(models.Manager):
    def get_queryset(self):
        return super(DahlBookManager, self).get_queryset().filter(author='Roald Dahl')

# Then hook it into the Book model explicitly.
class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)

    objects = models.Manager() # The default manager.
    dahl_objects = DahlBookManager() # The Dahl-specific manager.

PS:我从django文档中获取了这些示例。

答案 1 :(得分:0)

我不知道Django人如何使用这些术语,但“记录级操作”应该是对一个或多个记录的操作,而“表级操作”应该表示整个表的操作。我不太清楚所有行上的操作应该是什么 - 也许两者都有,也许这取决于结果。

在Python中,“记录级别”的常用术语是“元素级”。对于Python内置函数,bool对集合进行操作:bool([0, 1, 0, 3]) = True。对于numpy数组,bool对元素进行操作(至少通常):`bool([0,1,0,2])= [False,True,False,True]。还比较[1,2,3] * 2 = [1,2,3,1,2,3]与[1,2,3] * 2 = [2,4,6]。

我希望这会有所帮助。看看它在上下文中是否有意义。