rihib
@rihib (rihib)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

djnago-extra-viewsを使っているが、テンプレートに(Hidden field TOTAL_FORMS) This field is required. と表示されてしまう

注意

以下のサイトでも同様の質問を投稿しています。
stack overflow
teratail

発生している問題・エラーメッセージ

django-extra-viewsを使ってインラインフォームを作りたいのですが、フォームを表示しようとしてもインラインにしたフォームに関しては下記のように表示されてしまいます。
スクリーンショット 2022-08-13 14.26.43.png

環境

django 3.2
django-extra-views 0.7.1(現時点で最新)

該当のソースコード

models.py
class Property(models.Model):
    customer_id = models.ForeignKey(Customer, on_delete=models.CASCADE,null=True)
    name = models.CharField(max_length=32,blank=True)
    address = models.CharField('住所',max_length=32,blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse("properties:properties")

class Estimate(models.Model):
    estimate_id = models.CharField(blank=True,max_length = 255)
    property_id = models.ForeignKey(Property, on_delete = models.CASCADE,related_name="property")
    ref_customer_id = models.ForeignKey(Customer,on_delete=models.CASCADE, null=True)
    customer_name = models.CharField('顧客名',max_length = 255)
    customer_email = models.EmailField('顧客メールアドレス',max_length = 255,blank=True)
    customer_tel = models.CharField('顧客電話番号',max_length = 11,blank=True)
    customer_postal_code = models.CharField('顧客郵便番号',max_length = 1024,blank=True)
    customer_address = models.CharField('顧客住所',blank=True,max_length = 1024)
    ref_property_id = models.IntegerField('物件ID',blank=True,default=0)
    property_address = models.CharField('物件住所',max_length = 1024,blank=True)
    version = models.CharField("バージョン",max_length = 255,blank=True)
    estimated_amount = models.IntegerField('見積金額',default=0)
    estimated_pdf = models.CharField('見積書',max_length=255,blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)    
    
    def __str__(self):
        return self.customer_name
views.py
from extra_views import CreateWithInlinesView, InlineFormSetFactory


class EstimateInline(InlineFormSetFactory):
    model = Estimate
    fields = ["estimate_id"]


class CreatePropertyView(CreateWithInlinesView):
    model = Property
    inlines = [EstimateInline]
    fields = ["customer_id", "name", "address"]
    template_name = 'tect/properties/estimates/create.html'
    
    def get_success_url(self):
        return self.object.get_absolute_url()
create.html
<form action="" method="post">{% csrf_token %}
            {{ form.as_p }}

            {% for formset in inlines %}
                {{ formset }}
            {% endfor %}

            <div class="d-grid col-3 mx-auto pt-5">
                <button class="btn btn-outline-dark shadow" type="submit"">保存</button>
            </div>
        </div>
</form>

試したこと

djnago-extra-viewsのドキュメントを読み、書いてある通りにコードを書いております。

また調べたところフォームセットというものが関係していると思うのですが、あまり情報がなく解決には至りませんでした。

0

1Answer

解決しました。どうやらブラウザのキャッシュかなんかの問題で修正が反映されてなかったようです。しばらく時間を置いてから再度表示させてみると正常に表示されました。

0Like

Your answer might help someone💌