我有像这样的模型。
class Mp3(models.Model):
title=models.CharField(max_length=30)
artist=models.ForeignKey('Artist')
以下是Artist模型的样子:
class Artist(models.Model):
name=models.CharField(max_length=100,default="Unknown")
我创建了一个ID为1的艺术家。我如何创建一个分配给这位艺术家的mp3?(我想要这样的查询,例如。
mp3=Mp3.objects.get(id=50)
mp3.artist
)我试过这样的事情
newMp3=Mp3(title="sth",artist=1)
但我得到了
ValueError: Cannot assign "1": "Mp3.artist" must be a "Artist" instance.
我理解错误但仍然不知道如何解决这个问题。谢谢你的帮助 最诚挚的问候
答案 0 :(得分:23)
我认为将数据库中的艺术家添加到Mp3模型中是不必要的,如果您已经拥有艺术家ID ,您应该这样做:
new_mp3 = Mp3(title='Cool song', artist_id=the_artist_id)
new_mp3.save()
请注意,artist参数中的 _id ,Django将外键ID存储在由field_name和 _id 组成的字段中,因此您可以将外键ID直接传递给无需再次访问数据库即可获取艺术家对象。
如果您的代码中不需要艺术家对象,则应使用此方法。
答案 1 :(得分:12)
artist = Artist.objects.get(id=1)
newMp3 = Mp3(title="sth", artist=artist)
答案 2 :(得分:2)
答案是:
newMp3=Mp3(title="sth", artist=the_artist)
其中'the_artist'是Artist
答案 3 :(得分:1)
答案将是:
artist_id = Artist.objects.objects.filter(id=1).first()
new_mp3 = Mp3(title="sth", artist_id=artist_id)
new_mp3.save()
artist_id = artist_id(左侧的值将从Mp3 fk中获取艺术家ID)
我来不及了...对不起!
答案 4 :(得分:1)
首先,创建或获取艺术家对象。
artist = Artist.objects.create(name =“艺术家名称”)
或
artist = Artist.objects.get(id=artist.id)
然后
newMp3 = Mp3(title="sth", artist=artist)