Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在django的form.py中组合两个不同的模型字段_Django_Forms - Fatal编程技术网

在django的form.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(

型号.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})
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}}
提交

当然,如果需要精确控制字段的位置,可以始终定义字段位置,而不是使用快速脏渲染。希望这对您有所帮助。

您似乎忘了问问题。问题在哪里?我的问题是如何将两个不同模型的两个不同字段合并为一种形式