Как отфильтровать данные из двух таблиц базы данных в 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)
Вернуться на верх