django - /spotify/liked/ 处的 ValueError:无法分配“某些值”:“Liked_Songs.track_name”必须是“个人资料”实例
问题描述
所以我有一些用户,他们的个人资料是在用户创建后自动创建的Django Signals
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Meta:
db_table = "Profile"
class Liked_Songs(models.Model):
track_name = models.ForeignKey(Profile , on_delete= models.CASCADE , related_name="track")
artiste_name= models.ForeignKey(Profile, on_delete= models.CASCADE , related_name="artiste")
album_name = models.ForeignKey(Profile, on_delete= models.CASCADE, related_name= "album")
class Meta:
db_table = "Liked Songs"
def __str__(self):
return self.track_name
在这个
Liked_Songs
模型中,我views.py
访问一个 API,我的目标是允许该模型中的所有字段都填充来自 API 的数据。所以会有多个track_name
等收到。所以每个配置文件可以有很多track names
等。ForeignKey
适合这个吗?但是,当我使用下面的这条路线时,我收到了我在问题描述中所述的错误。
Views.py
def liked(request): try: if "access_token" in request.session: sp = Spotify(auth = request.session.get("access_token")) liked = sp.current_user_saved_tracks(limit=30)['items'] for idx, item in enumerate(liked): track = item['track']["name"] artist= item["track"]["artists"][0]["name"] album = item["track"]["album"]["name"] Liked_Songs.objects.create( track_name= track, artiste_name= artist, album_name = album ).save() except SpotifyException: return redirect(reverse("login"))
解决方案
您将配置文件 ID 存储在轨道中,因此您无法在其中传递名称,因此请尝试在其中传递配置文件 ID 试试这个track_name_id = profile_id
推荐阅读
- php - 如何使用php从父子表创建excel表?
- excel - 当值存在时,VLOOKUP 返回 N/A
- java - 重新绘制jframe的更好方法
- python - “文件名无效” Python Tkinter
- c++ - 无法分配具有已删除复制构造函数的引用?
- html - 如何在html中设置一个div来填充父元素并在子元素变大时显示滚动条?
- c# - 如何将非常大的文件序列化为字节数组?
- javascript - InDesign - Javascript - 复制对象、粘贴到位、使用原始选择对新对象进行分组
- excel - Google 表格公式替换 Excel 公式查找(2,1/(AA:AA<>""),AA:AA)
- mysql - 如何通过语句转换订单中的日期?(MySQL)