Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Python 按ID显示内容(views.py)_Python_Django - Fatal编程技术网

Python 按ID显示内容(views.py)

Python 按ID显示内容(views.py),python,django,Python,Django,我开发了一个用于实践的大学系统应用程序,遇到了这样的问题:我必须显示属于某个主席的专业列表。这里的问题是:http://127.0.0.1:8000/chairs/1,http://127.0.0.1:8000/chairs/2等显示了与此屏幕截图类似的所有专业化。但我只想根据椅子id显示它们。以下是我的代码: views.py: def list_of_specialties(request, chair_id): chairs = Chair.objects.all() i

我开发了一个用于实践的大学系统应用程序,遇到了这样的问题:我必须显示属于某个主席的专业列表。这里的问题是:
http://127.0.0.1:8000/chairs/1
http://127.0.0.1:8000/chairs/2
等显示了与此屏幕截图类似的所有专业化。但我只想根据椅子id显示它们。以下是我的代码:

views.py:

def list_of_specialties(request, chair_id):
    chairs = Chair.objects.all()

    if chair_id:
        chair_id = get_object_or_404(Chair, id=chair_id)
        bachelor_sp = Specialty.objects.filter(degree_id=1) 
        master_sp = Specialty.objects.filter(degree_id=2)
        phd_sp = Specialty.objects.filter(degree_id=3) 

    context = {
        'chairs': chairs,
        'chair_id': chair_id,
        'bachelor_sp': bachelor_sp,
        'master_sp': master_sp,
        'phd_sp': phd_sp,
    }
    return render(request, 'specialties.html', context)
URL.py:

urlpatterns = [
    path('', views.index, name='index'),
    path('chairs', views.chairs, name='chairs'),
    path('chairs/<int:chair_id>', views.list_of_specialties, name='list_of_specialties'),
    path('chairs/<int:chair_id>/<int:specialty_id>', views.list_of_specializations, name='list_of_specializations'),
]

只需在
椅子上进行筛选
以及
学位
专业.objects.filter(椅子=椅子id,学位id=1)
。请注意,您在这里弄乱了名称(
chair\u id
不应该像您那样被
chair
实例替换)。不应该使用绝对外键值,如1、2、3。获取与学士学位对应的实际
学位
实例,并对其进行筛选。“你们不应该依赖那个样的身份证。”迪克格洛顿,我刚刚自己解决了这个问题,但再次感谢你们,老兄!
class Chair(models.Model):
    def __str__(self):
        return self.name

    name = models.CharField(max_length=100)
    phone = models.CharField(max_length=30)
    email = models.CharField(max_length=50)
    chairman = models.CharField(max_length=30)

class Specialty(models.Model):
    def __str__(self):
        return self.name

    name = models.CharField(max_length=100)
    chair = models.ForeignKey(Chair, on_delete=models.CASCADE)
    degree = models.ForeignKey(Degree, on_delete=models.CASCADE)