вложенный цикл в шаблоне Django не показывает правильный вывод - PullRequest
0 голосов
/ 18 мая 2018

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

вот мой код

{% for brand_report in brand_reports %}
  <h1> REPORT for Brand: {{ brand_report.brand.name }}</h1>
  {% for link in brand_report.links.all %}
    <h3>link:</h3><a href="{{ link.url }}">{{link.url}}</a>
  {% endfor %}
{% endfor %}

Требуемый вывод

REPORT for Brand: SizCom
link:
https://www.justdial.com/Kozhikode/SizCom-Near-to-Big-Bazaar-Calicut-City/0495PX495-X495-151217184614-Z4I2_BZDET
REPORT for Brand: SizCom
link:
https://www.justdial.com/Kozhikode/SizCom-Near-to-Big-Bazaar-Calicut-City/0495PX495-X495-151217184614-Z4I2_BZDET

Но я получаю вывод, подобный этому

REPORT for Brand: SizCom
REPORT for Brand: SizCom
link:
https://www.justdial.com/Kozhikode/SizCom-Near-to-Big-Bazaar-Calicut-City/0495PX495-X495-151217184614-Z4I2_BZDET
link:
https://www.justdial.com/Kozhikode/SizCom-Near-to-Big-Bazaar-Calicut-City/0495PX495-X495-151217184614-Z4I2_BZDET

Не знаю, что я делаю неправильно

модель:

class Brand(models.Model):
"""For the brand"""

name = models.CharField(max_length=500)
description = models.TextField(blank=True, null=True)
context = models.ManyToManyField(Context, blank=True)
variation = models.ManyToManyField('BrandVariation', blank=True, related_name='brand')
status = models.BooleanField(default=False)

def __str__(self):
    return self.name

class ResultLink(models.Model):
    """for results"""
    url = models.URLField(max_length=1000)
    country = models.ForeignKey(Country, blank=True, null=True)
    parent_site = models.ForeignKey(Domain, on_delete=models.CASCADE, blank=True, null=True)
    variation = models.ForeignKey(BrandVariation, on_delete=models.CASCADE, blank=True, null=True)
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE, blank=True, null=True, related_name='link')
   date = models.DateField(auto_now_add=True)

  def __str__(self):
     return "%s" % self.url

class BrandReport(TimeStampedModel):
""""""
brand = models.ForeignKey(Brand, related_name='counterfeit_report')
links = models.ManyToManyField(ResultLink, blank=True)

class Meta:
    verbose_name = "Brand Report"

Просмотров:

def view(request,brands):
  template_path = 'profile_brand_report.html'
  brand_reports = BrandReport.objects.filter(brand__id__in=brands)
  context = {'brand_reports': brand_reports}
  html = render_to_string(template_path, context)

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

У вас, очевидно, есть первый BrandReport без какой-либо связанной ссылки и второй BrandReport с двумя связанными ссылками - проверьте вашу базу данных.

FWIW, на самом деле я не понимаю, какая у вас модель BrandReport, поскольку у вас уже естьиностранный ключ для бренда в ResultLink.Ваша модель BrandReport не только избыточна (насколько мы можем судить), но и хрупка, поскольку она позволяет связать любой ReportLink с любым брендом без соблюдения ограничения ReportLink.brand.

0 голосов
/ 18 мая 2018

Я воссоздал ваш проект.Единственное, что вы пропустили, это ваше мнение.Итак, я полагаю, в этом ваша проблема.Вот мой взгляд:

def demoview(request):
    objs = BrandReport.objects.all()
    c = {
        "brand_reports": objs,
    }
    return render(request, "blog/demoview.html", c)

А вот мой шаблон:

{% for brand_report in brand_reports %}
  <h1> REPORT for Brand: {{ brand_report.brand.name }}</h1>
  {% for link in brand_report.links.all %}
    <h3>link:</h3><a href="{{ link.url }}">{{link.url}}</a>
  {% endfor %}
{% endfor %}

И мой результат именно такой, как вы хотели.Пожалуйста, проверьте ваш взгляд.

...