我有像这样的模型.
class Mp3(models.Model):
title=models.CharField(max_length=30)
artist=models.ForeignKey('Artist')
Run Code Online (Sandbox Code Playgroud)
以下是Artist模型的外观:
class Artist(models.Model):
name=models.CharField(max_length=100,default="Unknown")
Run Code Online (Sandbox Code Playgroud)
我创建了一个ID为1的艺术家.我如何创建一个分配给这位艺术家的mp3?(我想要这样的查询,例如.
mp3=Mp3.objects.get(id=50)
mp3.artist
Run Code Online (Sandbox Code Playgroud)
我试过这样的事
newMp3=Mp3(title="sth",artist=1)
Run Code Online (Sandbox Code Playgroud)
但我得到了
ValueError: Cannot assign "1": "Mp3.artist" must be a "Artist" instance.
Run Code Online (Sandbox Code Playgroud)
我理解错误但仍然不知道如何解决这个问题.感谢您的帮助.最诚挚的问候
Ric*_*llo 26
我认为从数据库中获取艺术家只是为了将它添加到Mp3模型中是不必要的,如果你已经拥有艺术家ID,你应该这样做:
new_mp3 = Mp3(title='Cool song', artist_id=the_artist_id)
new_mp3.save()
Run Code Online (Sandbox Code Playgroud)
请注意,artist参数中的_id,将外键id存储在由field_name加_id形成的字段中,这样您就可以将外键ID直接传递给该字段,而无需再次访问数据库来获取艺术家对象.
如果您不需要在代码中使用其他东西的艺术家对象,则应使用此方法.
Sei*_*dis 15
artist = Artist.objects.get(id=1)
newMp3 = Mp3(title="sth", artist=artist)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21048 次 |
| 最近记录: |