Внешний ключ Django «многие к одному» отображается в шаблоне - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь отобразить предложения о работе, которые связаны с Компанией (Many To One), но я не могу это сделать.Я перепробовал много циклов, но у меня даже нет набора запросов, поэтому я должен делать это неправильно, но не могу решить, что я делаю неправильно.

Мои файлы

models.py

class Company(models.Model):
    # field person with relation many to one (many persons to 1 company)
    team = models.ManyToManyField('Person')
    name = models.CharField(max_length=100, blank=False)
    ...

class Job(models.Model):
    name = models.CharField(max_length=40, blank=False)
    level = models.CharField(max_length=10, blank=False, choices=LEVELS)
    company = models.ForeignKey('Company', on_delete=models.CASCADE, default=None, blank=False)
    emp_type = models.ManyToManyField('Emp_type', blank=False)
    ...

    def __str__(self):
        return self.name

comp_list.html

            <div class="company-logo-container">
    <img class="company-logo" src="{{ brand.logo.url }}">
</div>
    <ul class="list-group">
       <li class="list-group-item">
          <a class="nav-link" href="#team">Team</a>
       </li>
       <li class="list-group-item">
          <a class="nav-link" href="#social_media">Social Media</a>
       </li>
       <li class="list-group-item">
          <a class="nav-link" href="#offers">Job Offers</a>
       </li>
       {% for job in jobs %}
       {% for company in job.company.all %}

        {{ job.name }}

        {% endfor %}
        {% endfor %}

    </ul>

views.py

def brands(request, slug):
    brand = get_object_or_404(Company, slug=slug)
    return render(request, 'company/comp_view.html', {'brand': brand})

def jobs(request, slug):
    job = get_object_or_404(Job, slug=slug)
    return render(request, 'company/job_view.html', {'job': job})

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

1 Ответ

3 голосов
/ 20 марта 2019

Учитывая, что вы передаете объект компании из brands представления в comp_view.html как brand шаблон:

{% for job in brand.job_set.all %}
    {{ job.name }}
{% endfor %}

Просто получите рабочие места для компании и затем просматривайте их.

Вы также можете просмотреть рабочие места, если хотите:

def brands(request, slug):
    brand = get_object_or_404(Company, slug=slug)
    jobs = brand.job_set.all()
    return render(request, 'company/comp_view.html', {'brand': brand, 'jobs': jobs})

А затем:

{% for job in jobs %}
    {{ job.name }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...