Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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';应为一个数字,但得到';投标';_Python_Html_Django_Forms - Fatal编程技术网

Python 字段';id';应为一个数字,但得到';投标';

Python 字段';id';应为一个数字,但得到';投标';,python,html,django,forms,Python,Html,Django,Forms,我正在从一个模型构建一个html页面。添加到页面的是一个表单,它似乎干扰了我用来构建页面的模型 我收到以下错误消息: 异常类型:ValueError at/bidding 异常值:字段“id”需要一个数字,但得到了“bidding” HTML(listing.HTML) models.py class Listing(models.Model): CATEGORIES = ( ('fashion','fashion'), ('electronics','e

我正在从一个模型构建一个html页面。添加到页面的是一个表单,它似乎干扰了我用来构建页面的模型

我收到以下错误消息: 异常类型:ValueError at/bidding 异常值:字段“id”需要一个数字,但得到了“bidding”

HTML(listing.HTML)

models.py

class Listing(models.Model):
    CATEGORIES = (
        ('fashion','fashion'),
        ('electronics','electronics'),
        ('sports','sports'),
        ('home','home'),
        ('motors','motors'),
        ('art','art'),
        ('business','business'),
        ('media','media'),
        ('others','others')
    )

    listingPoster = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Poster")
    listingName = models.CharField(max_length=128, verbose_name="Auction item")
    listingDesc = models.TextField(blank=True, verbose_name="Item description")
    listingActive = models.BooleanField(default=True, verbose_name="Active listing")
    listingImage = models.URLField(blank=True, verbose_name="Link to image")
    listingCategory = models.CharField(max_length=64, choices=CATEGORIES, default='others', verbose_name="Category")
    listingFirstBid = models.DecimalField(max_digits=8, decimal_places=2, default=1.0, verbose_name="Starting bid")
    listingCreated = models.DateTimeField(auto_now_add=True, null=True)
    watchers = models.ManyToManyField(User, blank=True, related_name="watchedListings", verbose_name="Watchers")
    ### requires the Pillow library to be installed

    def __str__(self):
        return f"{self.listingPoster} {self.listingName} {self.listingCategory} {self.listingActive}"
url.py

urlpatterns = [
    path("<str:listing>", views.listing, name="listing"),
    path("bidding", views.bidding, name="bidding")
]
urlpatterns=[
路径(“,views.listing,name=“listing”),
路径(“投标”,views.bidding,name=“投标”)
]

您应该交换模式,这样,如果您访问
竞价
,则它将首先查看
竞价
视图的路径,并且仅当路径不匹配时才进一步查看,因此:

urlpatterns = [
    #       ↓ first bidding
    path('bidding/', views.bidding, name='bidding'),
    path('<str:listing>/', views.listing, name='listing'),
]
此view函数接受第二个参数,该参数由URL提供:

路径(“,views.listing,name=“listing”)

在这个路径中,您声明URL返回变量
listing
,该变量被声明为一个字符串,并返回给视图函数。因此,当在数据库上运行筛选函数时,参数
id
将获得一个由变量
listing

urlpatterns=[
urlpatterns = [
  path("<str:listing>", views.listing, name="listing"),//This line is the culprit
  path("bidding", views.bidding, name="bidding")
]
path(“,views.listing,name=“listing”),//这一行是罪魁祸首 路径(“投标”,views.bidding,name=“投标”) ]
将第一个路径更改为如下所示,这将强制输入为整数

path("<int:listing>", views.listing, name="listing")
path(“,views.listing,name=“listing”)

您是从哪里得到错误的?哪一行?别让我们猜,这是让我困惑的事情之一。错误消息中没有行。这是回溯:威廉有正确的答案。我是在他发帖后不久发现的。
urlpatterns = [
    path('bidding/', views.bidding, name='bidding'),
    #       ↓ int path converter
    path('<int:listing>/', views.listing, name='listing'),
]
  def listing(request, listing):
  return render(request, "auctions/listing.html",{
       "listing" : Listing.objects.filter(id=listing)
  })
urlpatterns = [
  path("<str:listing>", views.listing, name="listing"),//This line is the culprit
  path("bidding", views.bidding, name="bidding")
]
path("<int:listing>", views.listing, name="listing")