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