【问题标题】:How do I display form instance values outside of input forms?如何在输入表单之外显示表单实例值?
【发布时间】:2022-01-06 21:11:27
【问题描述】:
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__'

考虑上面的代码 sn-p。我正在尝试创建一个显示给定模型实例提供的信息的表单,但只允许编辑 checked_out_to 字段。其他字段不应显示为输入字段。

readonly、hidden 和 disabled 属性不是我想要的。

感谢您阅读我的问题:)

编辑:我也希望将其扩展为表单集。

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    我想通了!

    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 }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      相关资源
      最近更新 更多