我一直在尝试创建此模型对象,但不断收到此错误:字段“id”需要一个数字,但得到“创建”。错误图片分享如下。我正在使用 djangi 3.0.3 view.py 文件:-from django.shortcuts import renderfrom . import modelsfrom django.views.generic import (View,TemplateView,ListView,DetailView, CreateView,UpdateView,DetailView)# Create your views here.class IndexView(TemplateView): template_name = 'index.html'class SchoolListView(ListView): context_object_name = 'schools' model = models.Schoolclass SchoolDetailView(DetailView): context_object_name = 'school_detail' model = models.School template_name = 'basic_app/school_detail.html'class SchoolCreateView(CreateView): fields = ('name','principal','location') model = models.Schoolmodel.pyfrom django.db import modelsfrom django.urls import reverse# Create your models here.class School(models.Model): name = models.CharField(max_length=265) principal = models.CharField(max_length=256) location = models.CharField(max_length=256) def __str__(self): return self.name def get_absolute_url(self): return reverse("basic_app:detail", kwargs={'pk':self.pk})class Student(models.Model): name = models.CharField(max_length=256) age = models.PositiveIntegerField() school = models.ForeignKey(School, related_name='student', on_delete=models.CASCADE) def __str__(self): return self.name
1 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
这看起来像是您的 urls.py 的错误。只要确保当您在 urls.py 中提到 URL 路径时,明确的路径在前,变量路径在后。例如,这段代码会给你一个错误:
path('<int:id>/' , view.DetailView.as_view(), name="detail") path('create/' , view.CreateView.as_view(), name="create")
为了避免错误,只需更改顺序,如下所示:
path('create/' , view.CreateView.as_view(), name="create") path('<int:id>/' , view.DetailView.as_view(), name="detail")
发生这种情况是因为在后面的代码中,django 将查找路径 /create,如果无法匹配,它将查找路径 int:id/。现在,由于 int:id/ 是一个变量,如果 django 首先查找它,它将尝试将“create”分配给 id 变量,这将产生验证问题。
添加回答
举报
0/150
提交
取消