繁体   English   中英

model forms were not generated automatically using django model forms

[英]model forms were not generated automatically using django model forms

I'm creating Django forms using model forms because u I wanted the forms to be created automatically, but when I created this code the forms do not appear in the index.html page

模型.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__'

视图.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)

索引.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),
]

我期待表单字段会自动生成,但它们没有出现!

你的整体观点是错误的。像这样改变

def addbc(request):
    bcform = BaseCaseForm()
    if request.method == 'POST'
       bcform=BaseCaseForm(request.POST)
       if bcform.is_valid():
         bcform.save()
         return redirect('some_path') #redirect to some url not template

    return render(request, 'index.html', {'bcform':bcform})

编辑:您的 html 中没有<form>标签。添加此

<h1>Forms</h1>

<form method='post'>
          {% csrf_token %}
          {{ bcform }}
       <input type="submit" value="add">
</form>

您的views.indexviews.addbc使用相同的空路径更改如下

 url(r'^addbc/^$', views.addbc),

如果您使用 django 2+,也请使用路径

您可以尝试 CreateView,它将为您的 model 创建 forms。 文档中找到更多关于它的信息

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

视图.py

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

索引.html

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

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM