Python 如何从数据库中获取与ID对象的关联
我正在创建一个使用django数据库的网站。该数据库将有一个名为categories的def和一个名为gifi的def。因此,gif将属于一个类别,当单击一个类别时,它会将用户发送到一个页面,其中将显示属于该类别的所有gif。我知道我应该执行类似于请求ID的操作,但我我不知道密码 以下是模型:Python 如何从数据库中获取与ID对象的关联,python,html,django,django-queryset,Python,Html,Django,Django Queryset,我正在创建一个使用django数据库的网站。该数据库将有一个名为categories的def和一个名为gifi的def。因此,gif将属于一个类别,当单击一个类别时,它会将用户发送到一个页面,其中将显示属于该类别的所有gif。我知道我应该执行类似于请求ID的操作,但我我不知道密码 以下是模型: from django.db import models class categorite(models.Model): name = models.CharField(max_length=1
from django.db import models
class categorite(models.Model):
name = models.CharField(max_length=100)
id = models.AutoField(primary_key=True)
class Gifi(models.Model):
foto = models.ImageField(upload_to='website/static/')
emri = models.CharField(max_length=100)
Source = models.CharField(max_length=100)
Kodet = models.CharField(max_length=12)
categoryId = models.ForeignKey(categorite, on_delete=models.CASCADE)
id = models.AutoField(primary_key=True)
这是我的看法:
from django.shortcuts import render,get_object_or_404
from .models import Gifi,categorite
# Create your views here.
def home(request):
return render(request, 'website/home.html')
def categories(request):
content = {
'view': categorite.objects.all()
}
return render(request, 'website/categories.html',content)
def PostaCode(request):
return render(request, 'website/PostaCode.html')
def Contact(request):
return render(request, 'website/Contact.html')
def category(request,id):
content = {
'view': categorite.objects.get(id=id)
}
return render(request, 'website/category.html',content)
这是URL:
from django.urls import path
from . import views
urlpatterns = [
path('Home/',views.home, name='home'),
path('Categories/', views.categories, name='categories'),
path('PostaCode/', views.PostaCode, name='PostaCode'),
path('Contact/', views.Contact, name='Contact'),
path('Category/<int:id>/', views.category, name='category'),
]
从django.url导入路径
从…起导入视图
URL模式=[
路径('Home/',views.Home,name='Home'),
路径('Categories/',views.Categories,name='Categories'),
路径('PostaCode/',views.PostaCode,name='PostaCode'),
路径('Contact/',views.Contact,name='Contact'),
路径('Category/',views.Category,name='Category'),
]
这是我用来在my categories.html上显示类别的代码:
<div class="row p">
{%for categorite in view%}
<a class="c" href="{% url 'category' categorite.id %}">{{categorite.name}}</a>
{% endfor %}
</div>
{视图%中分类的百分比}
{%endfor%}
本视频快速展示了网站目前的运行情况:
您可以使用以下方法获取数据:
# view
def category(request,id):
content = {
'view': Gifi.objects.filter(categoryId_id=id)
}
return render(request, 'website/category.html',content)
# template
<div class="row p">
{% for gifi in view %}
{{ gifi.emri }}
{% endfor %}
</div>
在您的视图中,当您请求
Gifi
时,应使用您从url提供的
。所以在您的视图中是这样的:Gifi.objects.filter(categoryId\u id=id)
然后您可以在上下文中传递它
您必须修复的备注:
是小写,它应该categate
也应该是英文名称categate
应该是小写,遵循python约定Source,Kodet
已过时,因为您总是有id
,django知道在筛选结果时何时将pk
转换为id
pk
应该只是categoryId
category
- 视图函数应始终处于snake状态。例如
->PostaCode
PostaCode
- 确定函数、类之间的间距
- URL应该是小写的
与您的代码保持一致是强制性的,请始终遵循每种语言的约定。对于python,这可能是或请确保您了解这两个方面。“categoryId应该是category_id”,这不是100%正确的。如果从Django的角度考虑,它会自动创建一个名为
category\u id
的字段,如果您将该字段命名为category
(您可以使用该字段进行查询或从数据库表中进行验证)。所以“categoryId应该是category”是的,这是完全正确的,我只是把它翻译成了snake case,没有想到这一点!
# view
def category(request,id):
content = {
'view': Category.objects.get(id=id)
}
return render(request, 'website/category.html',content)
# template
<div class="row p">
{{ view.name }} // category name
{% for gifi in view.gifi_set.all %}
{{ gifi.emri }} // gifi information
{% endfor %}
</div>