Как получить доступ к связанному полю внешнего ключа в шаблоне при использовании формы модели Django
Моя цель
Доступ к полю name
в родительской модели ParentModel
и отображение его содержимого в form instance
в шаблоне. Например, пусть поле parent
будет foreign key
в ChildModel
, как описано ниже.
Что я пробовал
Доступ к родительскому полю в форме как {{ form.parent.name }}
в шаблоне
Получены ошибки
Tried looking up form.parent.name in context
models.py
class ParentModel(models.Model):
name = models.CharField()
class ChildModel(models.Model):
parent = models.ForeignKey(ParentModel)
forms.py
class ChildModelForm(ModelForm):
class Meta:
model = ChildModel
fields = '__all__'
widgets = {'parent': forms.Select(),}
views.py
def childView(request, pk):
template = 'template.html'
child = ChildModel.objects.get(parent=pk)
form = ChildModelForm(instance=child)
if request.method == 'POST':
form = ChildModelForm(request.POST, instance=child)
if form.is_valid():
form.save()
else:
form = ChildModelForm(instance=child)
context = {'form': form, }
return render(request, template, context)
template.html
<form method="POST" action="">
{% csrf_token %}
{{form.parent.name}}
<button type="submit">Save</button>
</form>
Теперь в форме дочерней модели отображается pk
Я хочу отобразить имя родительского поля
Я также пытался использовать это Django access foreignkey fields in the form, но это не сработало для меня.
Насколько я понимаю, вы хотите отобразить значения экземпляра формы. Вы можете сделать:
form.instance.parent.name