如何在python djang中实现这一点

2024-06-08 11:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模型:

class ModelOne(models.Model):
   name = models.TextField()
   year = models.IntegerField()

class ModelTwo(models.Model):
   name = models.TextField()
   year = models.IntegerField()

以及它们各自的进入模式

class EntryCenter(models.Model)
   name = models.TextField()
   user = models.ForeignKey(User,related_name="user_entrycenters") 

class EntryOne(models.Model)
   entrycenter = models.ForeignKey(EntryCenter,related_name="center_one_entries")
   model_one = models.ForeignKey(ModelOne,related_name="model_one_entries")
   added = models.DateTimeField(auto_now_add=True)
   user = models.ForeignKey(User,related_name="user_one_entries") 

class EntryTwo(models.Model)
   entrycenter = models.ForeignKey(EntryCenter,related_name="center_two_entries")
   model_two = models.ForeignKey(ModelTwo,related_name="model_two_entries") 
   added = models.DateTimeField(auto_now_add=True)
   user = models.ForeignKey(User,related_name="user_two_entries")

现在我在EntryCenter XY,我需要在这个中心查询这两个条目,并用oldest year firstyear排序,然后呈现到模板。你知道吗

center = EntryCenter.objects.get(id=1)#<-- EntryCenter XY
one = center.center_one_entries.order_by('model_one__year')
two = center.center_two_entries.order_by('model_two__year')
entries = sorted(chain(one, two), key=lambda obj: obj.year)

one是例如[1, 3, 4]two是例如[2, 5, 6]

我需要[1,2,3,5,4,6],我怎样才能做到这一点?你知道吗


Tags: namemodelmodelsyearoneclassentriescenter