Как вернуть только одно значение в поле, а не все значения в таблице django?

Я хочу, чтобы отображался только один представитель каждой телеграммы, а не все кортежи

enter image description here

Там, где он отмечен, появляются все значения из таблицы бота messega, если у вас есть 50 кортежей из одной группы Telegram, то у вас будет 50 вариантов для выбора. Как сделать так, чтобы был только один представитель? Пример: 5X Группа x, id =1; 10X Группа y, id =2;

но появляется только один из них: Группа x, id =1; Группа y, id =2;

code:

class MessageBot(models.Model):
  chat_id = models.BigIntegerField()
  chat_group = models.CharField(max_length=30)
  first_name = models.CharField(max_length=30)
  last_name = models.CharField(max_length=60)
  date = models.DateTimeField(auto_now_add=True)
  messageUser = models.TextField()

      self.client = client
      super().save(*args, **kwargs)

  def __str__(self):
    return f"{self.chat_id} - {self.chat_group}"
  
class MainGroup(models.Model):
    client = models.ForeignKey(Client, on_delete= models.CASCADE)
    telegram = models.ForeignKey('MessageBot', on_delete= models.CASCADE, null=False)

    def __str__(self):
        return f"{self.telegram}"

Таким образом можно получить все MainGroup записи, связанные с chat_id модели MessageBot. Обращение идет через поле telegram, которое ссылается на основную MessageBot модель, и через double underline мы указываем поле для фильтрации.

Doc:

ForeignKey

фильтрация

entries = MainGroup.objects.filter(telegram__chat_id=1)

первые и последние записи

print('first', entries.first())
print('last', entries.last())

выведите все записи через цикл и, например, выведите имя_и фамилию каждой записи.

for i in entries:
    print(i)
    print('first_name', i.telegram.first_name)
Вернуться на верх