Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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表单未从模板提交_Django_Django Models_Django Forms_Django Views_Django Templates - Fatal编程技术网

Django表单未从模板提交

Django表单未从模板提交,django,django-models,django-forms,django-views,django-templates,Django,Django Models,Django Forms,Django Views,Django Templates,我在提交此表格时遇到问题。我可以从管理仪表板提交表单,但不能从模板提交表单。我可能做错了什么 models.py文件: from teamprofile.models import TeamProfile from django.utils import timezone from competition.models import CompetitionProfile from datetime import datetime from django.contrib.auth.models i

我在提交此表格时遇到问题。我可以从管理仪表板提交表单,但不能从模板提交表单。我可能做错了什么

models.py文件:

from teamprofile.models import TeamProfile
from django.utils import timezone
from competition.models import CompetitionProfile
from datetime import datetime
from django.contrib.auth.models import User

class MatchProfile(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    competition = models.ManyToManyField(CompetitionProfile)
    home_team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE, related_name = 'home_team')
    away_team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE, related_name = 'away_team')
    # start_time = models.DateField(blank=True, null=True)



    def __str__(self):
        return "{} vs {}".format(self.home_team, self.away_team)
from .models import MatchProfile

class CreateMatchForm(forms.ModelForm):


class Meta():
    model = MatchProfile
    fields = ('competition', 'home_team', 'away_team')
    widgets = {
        
        'competition': forms.Select(attrs={'class':  'uk-select'}),
        'home_team': forms.Select(attrs={'class':  'uk-select' }),
        'away_team': forms.Select(attrs={'class':  'uk-select' }),
        # 'start_time': forms.SelectDateWidget(),

        
        
    }
from .forms import CreateMatchForm
from .models import MatchProfile

class MatchProfileCreateView(CreateView):
    model = MatchProfile
    success_url = reverse_lazy('home')
    form_class = CreateMatchForm


    def form_valid(self, form):
        form.instance.owner = self.request.user

        return super(MatchProfileCreateView, self).form_valid(form)
forms.py文件:

from teamprofile.models import TeamProfile
from django.utils import timezone
from competition.models import CompetitionProfile
from datetime import datetime
from django.contrib.auth.models import User

class MatchProfile(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    competition = models.ManyToManyField(CompetitionProfile)
    home_team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE, related_name = 'home_team')
    away_team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE, related_name = 'away_team')
    # start_time = models.DateField(blank=True, null=True)



    def __str__(self):
        return "{} vs {}".format(self.home_team, self.away_team)
from .models import MatchProfile

class CreateMatchForm(forms.ModelForm):


class Meta():
    model = MatchProfile
    fields = ('competition', 'home_team', 'away_team')
    widgets = {
        
        'competition': forms.Select(attrs={'class':  'uk-select'}),
        'home_team': forms.Select(attrs={'class':  'uk-select' }),
        'away_team': forms.Select(attrs={'class':  'uk-select' }),
        # 'start_time': forms.SelectDateWidget(),

        
        
    }
from .forms import CreateMatchForm
from .models import MatchProfile

class MatchProfileCreateView(CreateView):
    model = MatchProfile
    success_url = reverse_lazy('home')
    form_class = CreateMatchForm


    def form_valid(self, form):
        form.instance.owner = self.request.user

        return super(MatchProfileCreateView, self).form_valid(form)
views.py文件:

from teamprofile.models import TeamProfile
from django.utils import timezone
from competition.models import CompetitionProfile
from datetime import datetime
from django.contrib.auth.models import User

class MatchProfile(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    competition = models.ManyToManyField(CompetitionProfile)
    home_team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE, related_name = 'home_team')
    away_team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE, related_name = 'away_team')
    # start_time = models.DateField(blank=True, null=True)



    def __str__(self):
        return "{} vs {}".format(self.home_team, self.away_team)
from .models import MatchProfile

class CreateMatchForm(forms.ModelForm):


class Meta():
    model = MatchProfile
    fields = ('competition', 'home_team', 'away_team')
    widgets = {
        
        'competition': forms.Select(attrs={'class':  'uk-select'}),
        'home_team': forms.Select(attrs={'class':  'uk-select' }),
        'away_team': forms.Select(attrs={'class':  'uk-select' }),
        # 'start_time': forms.SelectDateWidget(),

        
        
    }
from .forms import CreateMatchForm
from .models import MatchProfile

class MatchProfileCreateView(CreateView):
    model = MatchProfile
    success_url = reverse_lazy('home')
    form_class = CreateMatchForm


    def form_valid(self, form):
        form.instance.owner = self.request.user

        return super(MatchProfileCreateView, self).form_valid(form)
.html文件:

                            <form class="uk-child-width-1-2@s uk-grid-small p-4" uk-grid method="POST">
                                <div> {% csrf_token %}
                                    <h5 class="uk-text-bold mb-2">  Competiton Name </h5>
                                    {{ form.competition }}
                                    <!-- <input type="text" class="uk-input" placeholder="Your name"> -->
                                </div>
                                <div>
                                    <h5 class="uk-text-bold mb-2">  Home Teams </h5>
                                    {{ form.home_team }}
                                    <!-- <input type="text" class="uk-input" placeholder="Your seccond"> -->
                                </div>
                                <div>
                                    <h5 class="uk-text-bold mb-2">   Away Team </h5>
                                    {{ form.away_team }}
                                    <!-- <input type="text" class="uk-input" placeholder="eliedaniels@gmail.com"> -->
                                </div>
                                <!-- <div>
                                    <h5 class="uk-text-bold mb-2"> Organizer Contact</h5>
                                    {{ form.organizer_contact }} -->
                                    <!-- <input type="text" class="uk-input" placeholder="+1 555 623 568 "> 
                                </div> -->
                            

                                <div class="uk-flex uk-flex-right p-4">
                                    <button class="button soft-primary mr-2">Cancel</button>
                                    <button type="submit" class="button primary">Create Match</button>
                                
                                </div>
                            </form>

{%csrf_令牌%}
竞赛名称
{{form.competition}}
主队
{{form.home_team}
客队
{{form.away_team}
取消
创建匹配
我肯定是做错事了,但我似乎无法理解。使用相同方法和模板构建的其他表单似乎正在运行


我的终端会显示发出了POST请求,但仍然无法工作

我会发现错误来自forms.py:

结果表明POST请求发送的字段输入与模型上声明的不同

我换了房间

“竞争”:forms.Select(attrs={'class':'uk Select'}),


差异在于形式。选择multiple,因为模型是一个ManyToManyField。

当你说它不起作用时,你是什么意思?您的模板中没有显示任何表单错误数据是否保存在后端?尝试在模板中提交表单,并查看数据是否保存在管理页面中。@IainShelvington,你说得对。一旦我打印了错误,我就会发现小部件类型声明就是问题所在。