基数为10:djang的int()的文本无效

2024-04-20 08:51:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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']

Tags: getmodelsrequestpagecodeallprogramusers
1条回答
网友
1楼 · 发布于 2024-04-20 08:51:10

您需要对相关programprogram_code进行筛选,因此:

def courses(request,program_code_no):
    obj = Courses.objects.filter(program__program_code=program_code_no)
    paginator = Paginator(obj,20)
    pagenum = request.GET.get('p', 1)
    page = paginator.get_page(pagenum)
    all_details={
        'lists': page,
    }
    return render(request,'courses/courses/index.html',context=all_details)

相关问题 更多 >