首页 > 解决方案 > 字段 'id' 需要一个数字,但得到了 ' '

问题描述

我正在尝试获取我的项目的 ID,以便我可以将其保存在用户的个人资料中。但是,当我发出发布请求时,我收到错误:字段 'id' 需要一个数字,但得到了 ''。

那么我该如何解决这个问题,以便我可以获得项目的 ID,为什么它在我的代码中不起作用?

这是该页面的视图:

def search(request):
  animes = []

  if request.method=='POST' and 'search' in request.POST :
      animes_url = 'https://api.jikan.moe/v3/search/anime?q={}&limit=6&page=1'
      
      search_params = {
          'animes' : 'title',
          'q' : request.POST['search']
          
          }

      r = requests.get(animes_url, params=search_params)
      results = r.json()
      
      results = results['results']
      
      
      if len(results):
          for result in results:
              animes_data = {
                  'Id' : result["mal_id"],
                  'Title' : result["title"],
                  'Episodes' : result["episodes"],
                  'Image' : result["image_url"]
              }
              animes.append(animes_data)
      else:
          message = print("No results found")
      
      for item in animes:
          id = item.get("Id")  
          title = item.get("Title")
          episodes = item.get("Episodes")
          image = item.get("Image")
          
          anime_in_database = Anime.objects.filter(title=title).exists()
          if not anime_in_database:
             anime = Anime.objects.create(mal_id=id, title=title, episodes=episodes, image=image) 
             anime.save()

      context = {
       'animes' : animes
       }
           
      return render(request,'search.html', context)

  elif request.method=='POST' and 'anime_pk' in request.POST :

      anime_id = request.POST.get("anime_pk")
      anime = Anime.objects.get(id = anime_id)
      request.user.profile.animes.add(anime)
      messages.success(request,(f'{anime} added to wishlist.'))
      return redirect ('/search')
   
      animes = Anime.objects.all()
   
  return render(request,'search.html')

带有项目的 html 部分:

<form method="post">
       {% csrf_token %}
       <section>
         <div class=row>
         <div class="col-md-4 col-sm-6 col-lg-3">
           <div class="card">
             
             <div class="card-body text-center">
               <p class="card-title"> <b>{{anime.Title}}</b></p>
               <hr>
               <p class="card-text">Episodes: <b>{{anime.Episodes}}</b></p>
               
               <img src = {{anime.Image}} />
               
             </div>
           </div>
       </section>
       <input type="hidden" value="{{anime.pk}}" name="anime_pk">
       <button type="submit" class="btn btn-outline-primary" style="font-size:18px; border-radius: 50%">★&lt;/button>
                                         
     </form>

我的应用程序中的网址:

app_name = 'core'

urlpatterns = [
   path("", views.homepage, name="homepage"),
   path("login", views.login_request, name="login"),
   path("register", views.register_request, name="register"),
   path("logout", views.logout_request, name= "logout"),
   path("profile", views.profile, name="profile"),
   path("search", views.search, name="search")
   
]

标签: pythondjango

解决方案


推荐阅读