Django 每次运行代码时,我都会遇到下面的错误,我不知道是什么错误

Django 每次运行代码时,我都会遇到下面的错误,我不知道是什么错误,django,manytomanyfield,Django,Manytomanyfield,我得到下面的错误。感谢您的帮助。我可能在文档中遗漏了一些非常重要的内容 请指出我的错误,如果你看到它,并启发我关于多对多关系Django。从出现的错误来看,是否意味着.add()函数不能用于QuerySet 回溯 Internal Server Error: /7/ Traceback (most recent call last): File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\d

我得到下面的错误。感谢您的帮助。我可能在文档中遗漏了一些非常重要的内容

请指出我的错误,如果你看到它,并启发我关于多对多关系Django。从出现的错误来看,是否意味着.add()函数不能用于QuerySet

回溯

Internal Server Error: /7/
Traceback (most recent call last):
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\music\songs\views.py", line 141, in Playlist_Add
    playlist.song.add(song)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\fields\related_descriptors.py", line 926, in add
    self._add_items(self.source_field_name, self.target_field_name, *objs)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\fields\related_descriptors.py", line 1073, in _add_items
    '%s__in' % target_field_name: new_ids,
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\query.py", line 844, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\query.py", line 862, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\sql\query.py", line 1263, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\sql\query.py", line 1287, in _add_q
    split_subq=split_subq,
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\sql\query.py", line 1225, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\sql\query.py", line 1096, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\lookups.py", line 20, in __init__
    self.rhs = self.get_prep_lookup()
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\fields\related_lookups.py", line 59, in get_prep_lookup
    self.rhs = [target_field.get_prep_value(v) for v in self.rhs]
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\fields\related_lookups.py", line 59, in <listcomp>
    self.rhs = [target_field.get_prep_value(v) for v in self.rhs]
  File "C:\Users\hanya\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\fields\__init__.py", line 965, in get_prep_value
    return int(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'QuerySet'
[16/Apr/2020 23:06:55] "GET /7/ HTTP/1.1" 500 127314
views.py

def Playlist_Add(request, id):
    song = Song.objects.filter(id=id)
    playlist, created = Playlist.objects.get_or_create(user=request.user)
    #playlist.save()
    playlist.song.add(song)
    return redirect('home:home')
url.py

path('<int:id>/', views.Playlist_Add, name='playlist_add'),
path(“/”,views.Playlist\u Add,name='Playlist\u Add'),
模板

<footer class="w3-container w3-blue">
    <a href="{% url 'playlist_add' id=obj.id %}">
    <button type="button" class="btn btn-info">+ To Playlist</button>
    </a>
    <h5>last edited:&nbsp {{objects.timestamp}}</h5>
  </footer>

上次编辑:{{objects.timestamp}

您的
歌曲
不是一首歌曲,而是歌曲的
查询集
,因此可以包含零首、一首或多首歌曲。因为您对主键进行筛选,所以它只能包含零首或一首歌曲,但无论如何,它仍然是一个集合

您可以通过在
.filter()
上使用.code>get(..)来解决此问题,或者更好的方法是使用:

从django.shortcuts导入get\u object\u或\u 404
def播放列表_添加(请求,id):
宋=获取对象或404(宋,id=id)
playlist,created=playlist.objects.get\u或\u create(user=request.user)
#playlist.save()
播放列表.歌曲.添加(歌曲)
返回重定向('home:home')
注意:GET请求不应有副作用,因此 当用户发出GET请求时,对象不符合HTTP 标准因此,最好将其转换为POST请求

<footer class="w3-container w3-blue">
    <a href="{% url 'playlist_add' id=obj.id %}">
    <button type="button" class="btn btn-info">+ To Playlist</button>
    </a>
    <h5>last edited:&nbsp {{objects.timestamp}}</h5>
  </footer>
from django.shortcuts import get_object_or_404

def Playlist_Add(request, id):
    song = get_object_or_404(Song, id=id)
    playlist, created = Playlist.objects.get_or_create(user=request.user)
    #playlist.save()
    playlist.song.add(song)
    return redirect('home:home')