【问题标题】:model forms were not generated automatically using django model forms模型表单不是使用 django 模型表单自动生成的
【发布时间】:2019-11-07 10:42:26
【问题描述】:

我正在使用模型表单创建 Django 表单,因为您希望自动创建表单,但是当我创建此代码时,表单不会出现在 index.html 页面中

模型.py

from django.db import models


class BaseCase(models.Model):
    base_case_name = models.CharField(primary_key=True, max_length=255)
    version = models.TextField(blank=True, null=True)
    default = models.TextField(blank=True, null=True)  # This field type is a guess.

    class Meta:
        managed = False
        db_table = 'base_case'

forms.py

from django import forms
from SFP.models import *


class BaseCaseForm(forms.ModelForm):
    class Meta :
        model = BaseCase
        fields='__all__'

views.py

from django.shortcuts import render,redirect
from .models import *
from .forms import *

def addbc(self, request):
    bcform=BaseCaseForm(request.POST)
    bcform.save()
    basecasename = bcform.cleaned_data['post']
    version = bcform.cleaned_data['post']
    default = bcform.cleaned_data['post']
    bcform = BaseCaseForm()
    return redirect('index.html')
    args = {'bcform':bcform,
            'basecasename': basecasename,
            'version': version,
            'default' :default}

    return render(request, 'index.html', args)

index.html

<!DOCTYPE html>
<html>
    <head>
        <title>S&FP</title>
    </head>
    <body>
        <h1>Forms</h1>
          {% csrf_token %}
          {{ bcform }}
       <input type="submit" value="add">
    </body>
</html>

我认为这也很重要 urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index),
    url(r'^$', views.addbc),
]

我原以为表单字段会自动生成,但它们没有出现!

【问题讨论】:

    标签: python django django-models django-forms


    【解决方案1】:

    您可以尝试 CreateView,它会为您的模型创建表单。在docs中查找更多信息

    在你的情况下,创建一个这样的视图:

    views.py

    class BaseCaseCreate(CreateView):
        model = BaseCase
        template_name = 'index.html'
        success_url = reverse_lazy('app:home')
        fields = ('base_case_name','version','default')
    

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <title>S&FP</title>
    </head>
    <body>
        <h1>Forms</h1>
          {% csrf_token %}
          {{ form }}
       <input type="submit" value="add">
    </body>
    

    我希望这会有所帮助。

    【讨论】:

    • 应用程序不渲染任何 html 文件应该使用已经在 views.py 中定义的函数
    • 在视图中创建函数并在 urls.py 中提及。已经做了?
    • 您好,很抱歉这么晚才回复,我不知道您说的是哪个功能?
    • 它没有用。我应该在这个类中定义 addbc() 吗?
    • CreateView 会自动为您创建一个带有模型字段的表单。因此,您无需在视图中创建另一个函数 addbc()。我进行了编辑。 views.py 中的缩进
    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多