我是Django的新手,尝试将程序代码传递给视图,并根据程序代码过滤出对象。代码如下:
你知道吗型号.py你知道吗
class Program(models.Model):
class Meta:
verbose_name_plural = 'Program'
program_code = models.CharField(max_length=10,
default='',
validators=[MinLengthValidator(1)])
program_title = models.CharField(max_length=100,
default='',
validators=[MinLengthValidator(10)])
class Courses(models.Model):
class Meta:
verbose_name_plural = 'Courses'
program = models.ManyToManyField(Program, blank=False)
course_code = models.CharField(max_length=10,
default='',
unique=True,
validators=[MinLengthValidator(1)])
course_title = models.CharField(max_length=100,
default='',
validators=[MinLengthValidator(10)])
你知道吗网址.py地址:
urlpatterns = [
path('',views.programs,name='programs'),
path('<slug:program_code_no>/',views.courses,name='courses'),
]
你知道吗视图.py你知道吗
def programs(request):
obj = Program.objects.all()
paginator = Paginator(obj,20)
page = request.GET.get('p', 1)
list = paginator.get_page(page)
all_details={
'lists': list,
}
return render(request,'courses/programs/index.html',context=all_details)
def courses(request,program_code_no):
obj = Courses.objects.filter(program=program_code_no)
paginator = Paginator(obj,20)
page = request.GET.get('p', 1)
list = paginator.get_page(page)
all_details={
'lists': list,
}
return render(request,'courses/courses/index.html',context=all_details)
但是,当我试图获取http://127.0.0.1:8000/programs/P132/('P132'是一个程序代码对象,已经创建)时,我得到了这个错误
ValueError at /programs/P132/
invalid literal for int() with base 10: 'P132'
Request Method: GET
Request URL: http://127.0.0.1:8000/programs/P132/
Django Version: 2.2.1
Exception Type: ValueError
Exception Value:
invalid literal for int() with base 10: 'P132'
Exception Location: C:\Users\Prabu\Anaconda3\envs\codeforcoder\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 966
Python Executable: C:\Users\Prabu\Anaconda3\envs\codeforcoder\python.exe
Python Version: 3.7.4
Python Path:
['C:\\Users\\Prabu\\Desktop\\Django codeforcoder\\codeforcoder '
'v1.0.1\\codeforcoder',
'C:\\Users\\Prabu\\Anaconda3\\envs\\codeforcoder\\python37.zip',
'C:\\Users\\Prabu\\Anaconda3\\envs\\codeforcoder\\DLLs',
'C:\\Users\\Prabu\\Anaconda3\\envs\\codeforcoder\\lib',
'C:\\Users\\Prabu\\Anaconda3\\envs\\codeforcoder',
'C:\\Users\\Prabu\\Anaconda3\\envs\\codeforcoder\\lib\\site-packages']
您需要对相关
program
的program_code
进行筛选,因此:相关问题 更多 >
编程相关推荐