Django обратный иностранный ключ в шаблоне

Hej!

У меня есть несколько подключенных моделей, и я хочу отобразить информацию через шаблон. Все модели подключены через foreignkeys, но я могу отображать информацию только в одном направлении. Кто-нибудь знает, как сделать реверс, чтобы отображать информацию в обоих направлениях?

Я могу легко получить информацию об 'Survey' и 'Certification', но не могу добраться до 'SurveyBga' и 'Address'.

Любая помощь будет принята с благодарностью! :)

# models.py
class Survey(models.Model):
    survey_bga_id = models.ForeignKey(
        SurveyBga,
        on_delete=models.PROTECT,
        related_name="experiment"
    )
    year = models.PositiveSmallIntegerField(
        validators=[validate_year]
    )


class Certification(models.Model):
    survey_bga_yeardependent_id = models.ForeignKey(
        Survey,
        on_delete=models.PROTECT,
        related_name="certification"
    )
    type_of_experience = models.BooleanField(
        blank=True,
        null = True
    )


class Address(models.Model):
    street = models.CharField(
        max_length = 150,
        blank  = True,
    )


class SurveyBga(Address):
    internal_id = models.CharField(
        unique = True,
        max_length = 10
    )

# views.py

def experiment_bga_view(request):
    bga = Survey.objects.all()
    context = {"bga": bga}

    return render(request, 'app/template.html', context)

Я пытался

{% for survey in bga %}
    {% for plant in survey.experiment_set.all %}
        {{plant.internal_id}}
    {% endfor %}
{% endfor %}
{% for survey in bga %}
    {% for plant in survey.experiment.all %}
        {{plant.internal_id}}
    {% endfor %}
{% endfor %}
{% for survey in bga %}
    {{survey.experiment.internal_id}}
{% endfor %}

Вы используете related_name неправильно. Я имею в виду:

Чтобы перейти к "SurveyBga" из "Survey", просто сделайте:

{% for survey in bga %}
    {{survey.survey_bga_id.internal_id}}
{% endfor %}

Согласно вашему коду, вы можете использовать related_name "experiment" для доступа к "Survey" из "SurveyBga", противоположным образом.

surveybga = SurveyBga.objects.get(id=.....)
survey = surveybga.experiment
Вернуться на верх