在django的form.py中组合两个不同的模型字段
型号.py在django的form.py中组合两个不同的模型字段,django,forms,Django,Forms,型号.py class Keyword(models.Model): keyname = models.CharField(max_length=45, unique = True) project = models.ForeignKey('Project') class KeywordCache(models.Model): keyword = models.ForeignKey('Keyword') testcase = models.ForeignKey(
class Keyword(models.Model):
keyname = models.CharField(max_length=45, unique = True)
project = models.ForeignKey('Project')
class KeywordCache(models.Model):
keyword = models.ForeignKey('Keyword')
testcase = models.ForeignKey('TestcaseCache')
class TestcaseCache(models.Model):
name = models.CharField(max_length=60)
package_name = models.CharField(max_length=100)
summary = models.TextField()
pre_requisite = models.TextField(blank = True)
steps = models.TextField()
expected_results = models.TextField()
post_test = models.TextField(blank = True)
data_provider = models.TextField(blank = True)
author = models.ForeignKey(Engineer, related_name = 'author_id')
reviewer = models.ForeignKey(Engineer,related_name = 'reviewer_id',null=True,blank = True,default=None)
release = models.CharField(max_length=45, blank = True)
creation_date = models.DateField(auto_now_add=True)
bugs = models.TextField(blank = True)
notes = models.TextField(blank = True)
project = models.ForeignKey('Project')
feature = models.ForeignKey('FeatureCache')
from django import forms
from apps.tcg.models import TestcaseCache
from apps.tcg.models import Keyword
from django.core.exceptions import ValidationError
from django.forms import ModelForm
# Create the form class.
class TestcaseCacheForm(forms.ModelForm),KeywordForm(models.ModelForm):
class Meta:
model = TestcaseCache,Keyword
fields = ('name','package_name','summary','pre_requisite','steps','expected_results','post_test','data_provider','author','reviewer','release',keyname,'bugs','notes','project','feature')
from forms import TestcaseCacheForm
def createForm(request):
return render(request,'tcgform.html',{'form':TestcaseCacheForm(),'testcase_object_array':testcase_object_array,'author_name':author_name,'project_name':project_id,'feature_name':feature_name})
Forms.py
class Keyword(models.Model):
keyname = models.CharField(max_length=45, unique = True)
project = models.ForeignKey('Project')
class KeywordCache(models.Model):
keyword = models.ForeignKey('Keyword')
testcase = models.ForeignKey('TestcaseCache')
class TestcaseCache(models.Model):
name = models.CharField(max_length=60)
package_name = models.CharField(max_length=100)
summary = models.TextField()
pre_requisite = models.TextField(blank = True)
steps = models.TextField()
expected_results = models.TextField()
post_test = models.TextField(blank = True)
data_provider = models.TextField(blank = True)
author = models.ForeignKey(Engineer, related_name = 'author_id')
reviewer = models.ForeignKey(Engineer,related_name = 'reviewer_id',null=True,blank = True,default=None)
release = models.CharField(max_length=45, blank = True)
creation_date = models.DateField(auto_now_add=True)
bugs = models.TextField(blank = True)
notes = models.TextField(blank = True)
project = models.ForeignKey('Project')
feature = models.ForeignKey('FeatureCache')
from django import forms
from apps.tcg.models import TestcaseCache
from apps.tcg.models import Keyword
from django.core.exceptions import ValidationError
from django.forms import ModelForm
# Create the form class.
class TestcaseCacheForm(forms.ModelForm),KeywordForm(models.ModelForm):
class Meta:
model = TestcaseCache,Keyword
fields = ('name','package_name','summary','pre_requisite','steps','expected_results','post_test','data_provider','author','reviewer','release',keyname,'bugs','notes','project','feature')
from forms import TestcaseCacheForm
def createForm(request):
return render(request,'tcgform.html',{'form':TestcaseCacheForm(),'testcase_object_array':testcase_object_array,'author_name':author_name,'project_name':project_id,'feature_name':feature_name})
视图.py
class Keyword(models.Model):
keyname = models.CharField(max_length=45, unique = True)
project = models.ForeignKey('Project')
class KeywordCache(models.Model):
keyword = models.ForeignKey('Keyword')
testcase = models.ForeignKey('TestcaseCache')
class TestcaseCache(models.Model):
name = models.CharField(max_length=60)
package_name = models.CharField(max_length=100)
summary = models.TextField()
pre_requisite = models.TextField(blank = True)
steps = models.TextField()
expected_results = models.TextField()
post_test = models.TextField(blank = True)
data_provider = models.TextField(blank = True)
author = models.ForeignKey(Engineer, related_name = 'author_id')
reviewer = models.ForeignKey(Engineer,related_name = 'reviewer_id',null=True,blank = True,default=None)
release = models.CharField(max_length=45, blank = True)
creation_date = models.DateField(auto_now_add=True)
bugs = models.TextField(blank = True)
notes = models.TextField(blank = True)
project = models.ForeignKey('Project')
feature = models.ForeignKey('FeatureCache')
from django import forms
from apps.tcg.models import TestcaseCache
from apps.tcg.models import Keyword
from django.core.exceptions import ValidationError
from django.forms import ModelForm
# Create the form class.
class TestcaseCacheForm(forms.ModelForm),KeywordForm(models.ModelForm):
class Meta:
model = TestcaseCache,Keyword
fields = ('name','package_name','summary','pre_requisite','steps','expected_results','post_test','data_provider','author','reviewer','release',keyname,'bugs','notes','project','feature')
from forms import TestcaseCacheForm
def createForm(request):
return render(request,'tcgform.html',{'form':TestcaseCacheForm(),'testcase_object_array':testcase_object_array,'author_name':author_name,'project_name':project_id,'feature_name':feature_name})
ModelForms不允许您继承多个模型类,但是,视图与它可以处理的表单类的数量无关。对于最终用户,您可以将两个表单类组合在一个HTML表单中。例如,假设您有两个模型表单类:
def my_view(request):
keyword_form = KeywordForm(request.POST or None)
another_form = AnotherForm(request.POST or None)
if keyword_form.is_valid and another_form.is_valid():
# do whatever
return render(request, 'your-template.html',
{'keyword_form': keyword_form, 'another_form': another_form})
# your_template.html
<form action="." method="post" enctype="application/x-www-form-urlencoded">
<ul>
{{ keyword_form.as_ul }}
{{ another_form.as_ul }}
</ul>
<button type="submit">Submit</button>
</form>
def my_视图(请求):
关键字表单=关键字表单(request.POST或None)
另一个表单=另一个表单(request.POST或None)
如果关键字\u form.is\u有效,而另一个\u form.is\u有效():
#做任何事
返回呈现(请求'your template.html',
{'keyword_form':keyword_form,'other_form':other_form})
#您的_template.html
{{keyword_form.as_ul}}
{{另一种形式{u ul}}
提交
当然,如果需要精确控制字段的位置,可以始终定义字段位置,而不是使用快速脏渲染。希望这对您有所帮助。您似乎忘了问问题。问题在哪里?我的问题是如何将两个不同模型的两个不同字段合并为一种形式