#python #django
#python #django
Вопрос:
Я пытался создать этот объект модели, но продолжаю получать эту ошибку: поле ‘id’ ожидало число, но получило ‘create’. Изображение ошибки приведено ниже. Я использую djangi 3.0.3 view.py файл:-
from django.shortcuts import render
from . import models
from 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.School
class 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.School
model.py
from django.db import models
from 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. Пожалуйста, укажите, что именно вы получаете и в каком случае
2. Извините, что передаю неполную информацию
Ответ №1:
Нажмите здесь для получения изображения кода, если вы используете path, в urls.py в папке приложения следуйте коду на картинке. Это устранило проблему для меня.
Комментарии:
1. Привет, Аман, пожалуйста, скопируйте код в вопрос, чтобы люди могли помочь вам напрямую, в StackOverflow.
Ответ №2:
Это похоже на ошибку с вашим urls.py . Просто убедитесь, что при указании URL-адресов в вашем urls.py окончательные пути появляются первыми, а переменные пути появляются позже. Здесь, например, этот код выдаст вам ошибку:
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 будет искать path / create, и если он не сможет его сопоставить, он будет искать path int:id/ . Теперь, поскольку int:id/ является переменной, если django должен был сначала ее искать, он попытался бы присвоить «create» переменной id, что приведет к проблеме с проверкой.
Ответ №3:
В appurls.py напиши это
path('<int:pk>/', views.SchoolDetailView.as_view(), name='detail')