Как вернуть только одно значение в поле, а не все значения в таблице django?
Я хочу, чтобы отображался только один представитель каждой телеграммы, а не все кортежи
Там, где он отмечен, появляются все значения из таблицы бота 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:
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)