模型(django)中主键的默认数据类型,当前路径,url '/app' 与这些中的任何一个都不匹配
default data type of primary keys in models (django), The current path, url '/app' didn't match any of these
据我所知,在Django中,id的默认数据类型是整数。
例如,如果我的 models.py 文件中有这样一个模型,Django 会为它的每个实例设置一个 id(主键),Django 会自动递增它,例如 1、2、3 等:
class AuctionListing(models.Model):
name = models.CharField(max_length=200)
url = models.URLField()
def __str__(self):
return f"{self.name}"
由于它自动将 id(primary key) 设置为整数数据类型,我可以在 url.py 文件中创建这样一个 url :
path("<int:listing_id>", views.listing, name="listing")
还有我的 views.py 文件:
def index(request):
return render(request, "auctions/index.html", {"auctionList":AuctionListing.objects.all()} )
另外,index.html 文件:
{% for listing in auctionList %}
<a href="url 'listing' listing.id"><img src = "{{listing.url}}" alt = "{{listing.name}}"></a>
{% endfor %}
这个问题,当它将 listing.id 传递给路径("int:listing_id", views.listing, name = "listing")时,它不会传递 id 作为整数但作为海峡。这就是为什么路径不接受它,因为它是 int:listing_id,当我转到该页面时,它给了我这个错误:“
当前路径,url 'listing' listing.id,与这些路径都不匹配。
当我将 int:listing_id 更改为 str:listing_id 时,它起作用了。请问在Django中id的默认数据类型是不是字符串数据类型?据我所知应该是整型数据类型。有人可以解释一下吗?
顺便说一句,我继承自AbstractUser。
数据库是sqlite3
是的,django 中默认的对象主键数据类型是 int,但如果你想访问它,你应该声明自己的主键字段或使用默认名称 pk
,在这种情况下您的网址应如下所示:
path("", views.listings, name="listings"),
path("<int:pk>", views.listing, name="listing")
你的观点是这样的:
def index(request):
listings = AuctionListing.objects.all()
return render(request, 'listings.html', {'listings': listings'}
def listing(request, pk):
listing = AuctionListing.objects.get(pk=pk)
return render(request, 'listing.html', {'listing': listing'}
在你的 listings.html
:
{% for listing in listings %}
<a href="{% url 'listing' listing.pk %}">{{ listing.name }}</a>
{% endfor %}
据我所知,在Django中,id的默认数据类型是整数。
例如,如果我的 models.py 文件中有这样一个模型,Django 会为它的每个实例设置一个 id(主键),Django 会自动递增它,例如 1、2、3 等:
class AuctionListing(models.Model):
name = models.CharField(max_length=200)
url = models.URLField()
def __str__(self):
return f"{self.name}"
由于它自动将 id(primary key) 设置为整数数据类型,我可以在 url.py 文件中创建这样一个 url :
path("<int:listing_id>", views.listing, name="listing")
还有我的 views.py 文件:
def index(request):
return render(request, "auctions/index.html", {"auctionList":AuctionListing.objects.all()} )
另外,index.html 文件:
{% for listing in auctionList %}
<a href="url 'listing' listing.id"><img src = "{{listing.url}}" alt = "{{listing.name}}"></a>
{% endfor %}
这个问题,当它将 listing.id 传递给路径("int:listing_id", views.listing, name = "listing")时,它不会传递 id 作为整数但作为海峡。这就是为什么路径不接受它,因为它是 int:listing_id,当我转到该页面时,它给了我这个错误:“
当前路径,url 'listing' listing.id,与这些路径都不匹配。
当我将 int:listing_id 更改为 str:listing_id 时,它起作用了。请问在Django中id的默认数据类型是不是字符串数据类型?据我所知应该是整型数据类型。有人可以解释一下吗?
顺便说一句,我继承自AbstractUser。 数据库是sqlite3
是的,django 中默认的对象主键数据类型是 int,但如果你想访问它,你应该声明自己的主键字段或使用默认名称 pk
,在这种情况下您的网址应如下所示:
path("", views.listings, name="listings"),
path("<int:pk>", views.listing, name="listing")
你的观点是这样的:
def index(request):
listings = AuctionListing.objects.all()
return render(request, 'listings.html', {'listings': listings'}
def listing(request, pk):
listing = AuctionListing.objects.get(pk=pk)
return render(request, 'listing.html', {'listing': listing'}
在你的 listings.html
:
{% for listing in listings %}
<a href="{% url 'listing' listing.pk %}">{{ listing.name }}</a>
{% endfor %}