У меня есть две модели, mpa и Cid - (только отображаются соответствующие данные)
class Mpa(models.Model):
mpa_number = models.CharField(max_length=16)
legacy_mpa = models.CharField(max_length=100, null=True, blank=True)
rbc_transit_number = models.CharField(max_length=100, null=True, blank=True)
class Cid(models.Model):
mpa = models.ForeignKey(Mpa,on_delete=models.CASCADE)
anchor_cid = models.CharField(max_length=100, null=False, blank=False)
campaign_name = models.CharField(max_length=100, null=False)
google_cid = models.CharField(max_length=100, null=True, blank=True)
Я объединил две таблицы по внешнему ключу, используя select_related :
result = Cid.objects.all().select_related('mpa')
mpa_number имеет отношение один ко многим с anchor_cid. Я хотел отобразить все anchor_cid, которые соответствуют mpa_number, в одной строке (в шаблоне есть таблица). Для конкатенации anchor_cid я использовал Concat следующим образом -
query_set = result.values('mpa_id').annotate(name = Concat('anchor_cid'))
Поскольку .values()
возвращает словарь, а .all()
возвращает экземпляр модели. Я не могу придумать способ объединить их и отобразить в шаблоне. Я пытался найти решение, но не смог найти этот сценарий. Может быть, я пытаюсь сделать это неправильно, и кто-то может указать мне правильное направление .. (используя Django 2.1.5 и mysql база данных)