django:如何从模型及其相关模型及其相关模型中递归获取修改日期

时间:2018-10-27 07:17:41

标签: django

我有以下型号:

我有四个主要模型,这些模型没有任何先验关键字段:

class Main1(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

class Main2(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

class Main3(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

class Main4(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

我有以下模型,这些模型取决于Foriengn字段:

Class Related1(models.Model)
    name = models.CharField(max_length=200)
    main4 = models.ForeignKey(Main4,on_delete=models.CASCADE)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)



Class Related2(models.Model)
    name = models.CharField(max_length=200)
    main3 = models.ForeignKey(Main3,on_delete=models.CASCADE)
    related1 = models.ForeignKey(Related1,on_delete=models.CASCADE)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)


Class Related3(models.Model)
    name = models.CharField(max_length=200)
    main2 = models.ForeignKey(Main2,on_delete=models.CASCADE)
    related2 = models.ForeignKey(Related2,on_delete=models.CASCADE)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)


Class Related4(models.Model)
    name = models.CharField(max_length=200)
    main1 = models.ForeignKey(Main1,on_delete=models.CASCADE)
    related3 = models.ForeignKey(Related3,on_delete=models.CASCADE)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

这里Main1Related4模型有关,但是Related4还有另一个前移键Related3,它进一步依赖于其他人

我正在尝试为给定的子弹字段找出与Main1相关的所有模型的修改日期。

我想递归保存所有相关对象的最新更新日期时间,然后将其存储在数据库中。我正在做一些复杂的计算。如果没有数据更改,我不想这样做。为此,我想将最新的数据时间与我存储在数据库中的数据时间进行比较。

Getting the modified date (i.e updated field) of Main1 instance

main1_instance = get_object_or_404(Main1, slug=slug)

main1_instance_modified_date = main1_instance.updated

Getting the latest modified date (i.e updated field) of Main1_Related4 objects

main1_related4_objects =  main1_instance.related4_set.all()

main1_related4_objects_latest_change = main1_related4_objects.latest('updated')

但是Related4具有外键Related3,而Related3依赖于Main2和Related2,依此类推

我想获取Main1实例的所有连接对象的所有修改日期(即更新字段)。有什么办法吗?

0 个答案:

没有答案