Как отфильтровать данные из двух таблиц базы данных в django
Если в моделях django две таблицы базы данных. как получить последние данные из обеих таблиц. и вывести order_by('date')
первая таблица базы данных:
class ANI_News_Detail(models.Model): # Represents ANI News Detail Model
read_time=models.DecimalField(decimal_places=2, max_digits=12, default=0.00)
news_id=models.BigIntegerField(default=0)
title = models.CharField(max_length=500, default='News-title')
slug = models.CharField(max_length=500, default='slug')
tags = models.CharField(max_length=500, default='tags')
category_name=models.ForeignKey(news_category,on_delete=models.CASCADE,null=True)
sub_category_name=models.ForeignKey(news_sub_category,on_delete=models.CASCADE,null=True,blank=True)
image_banner=models.URLField(max_length = 200)
medium_thumbnail=models.URLField(max_length = 200)
content = RichTextField() # Field Used For Paragraphs
created_at=models.DateTimeField(null=True)
2 таблица базы данных
class News_Detail(models.Model): # Represents Our News Detail Model
author = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
read_time=models.DecimalField(decimal_places=2, max_digits=12, default=0.00)
title = models.CharField(max_length=500, default='News-title')
slug = models.CharField(max_length=500,blank=True)
tags = models.CharField(max_length=500, default='tags')
category_name=models.ForeignKey(news_category,on_delete=models.CASCADE,null=True,blank=True)
sub_category_name=models.ForeignKey(news_sub_category,on_delete=models.CASCADE,null=True,blank=True)
image_banner= models.FileField(upload_to='image_banner', blank=True, null=True)
medium_thumbnail = models.FileField(upload_to='medium_thumbnail', blank=True, null=True)
content = RichTextField() # RichTextField is used for paragraphs
created_at=models.DateTimeField(auto_now_add=True)
Вам определенно не следует объединять два разных QuerySets. Но вы можете сделать это другим способом. Как я вижу, обе модели имеют одинаковые аргументы для упорядочивания. Вы можете получить все объекты в один и тот же list, затем отсортировать список с помощью lambda по .created_at.
mix = []
ani_news = ANI_News_Detail.objects.all()
news = News_Detail.objects.all()
[mix.append(an) for an in ani_news]
[mix.append(n) for n in news]
sorted_mix = sorted(mix, key=lambda x: x.created_at)
if you want reverse the order:
sorted_mix = sorted(mix, key=lambda x: x.created_at, reverse=True)