Как отобразить значения экземпляра формы вне форм ввода?
from django.db import models
from django import forms
class Author(models.Model):
name = models.CharField(max_length=254, primary_key=True)
class Patron(models.Model):
name = models.CharField(max_length=254, primary_key=True)
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.PROTECT)
title = models.CharField(max_length=254)
isbn = models.CharField(max_length=254, primary_key=True)
checked_out_to = models.ForeignKey(Patron, null=True, default=None, on_delete=models.CASCADE)
class BookInfoForm(forms.ModelForm):
class Meta:
model = Book
fields = '__all__'
Рассмотрим приведенный выше фрагмент кода. Я пытаюсь создать форму, которая отображает предоставленную информацию из данного экземпляра модели, но позволяет редактировать только поле checked_out_to
. Остальные поля не должны отображаться как поля ввода.
Атрибуты readonly, hidden и disabled - это не то, что я ищу.
Спасибо, что прочитали мой вопрос :)
РЕДАКТИРОВАТЬ: Я буду искать возможность расширить это до набора форм.
Я понял это!
class BookInfoForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Allows 'instance' to be callable from template
instance = kwargs.get('instance', None)
class Meta:
model = Book
fields = '__all__
В шаблоне:
{{ form.instance.author.name }} - {{ form.instance.title }}