使用Django ORM

时间:2016-09-17 22:20:46

标签: django orm django-queryset

我目前正在学习django orm并使用这种结构

class Album(models.Model):
    artist = models.CharField(max_length=128, unique=True)
    title = models.CharField(max_length=128, unique=True)
    genre = models.CharField(max_length=128, unique=False)

    def __unicode__(self):
        return "Artist:"+self.artist + " Title:"+self.title

class Song(models.Model):
    album = models.ForeignKey(Album) #Link to primary key in Album
    title = models.CharField(max_length=128)
    def __unicode__(self):
        return self.title

我使用此

进入相册
  
    

a =专辑(艺术家="麦当娜",标题=" SomeTitle",流派=" pop")     a.save()

  

并保存了它。

现在我如何插入歌曲表? 我之前的条目是这样的

  
    

a = Album.objects.get(artist__iexact ="麦当娜")

  

我认为我能做的一种方式是

   >> s = Song(a,title="SongA")
   >> s.save() #Error TypeError: int() argument must be a string or a number, not 'Album'

如何保存歌曲

2 个答案:

答案 0 :(得分:1)

您可以通过

获取已保存对象的实例
  model_obj = Album.objects.get(artist ="Madona")

获取对象后,您可以创建Song对象并保存。

  song_obj = Song(album=model_obj, title="SongA")
  song_obj.save()

答案 1 :(得分:0)

外键需要对象的pk。使用a.id代替a