【问题标题】:Inserting data into a Table row using Django ORM使用 Django ORM 将数据插入表格行
【发布时间】:2016-09-17 22:20:46
【问题描述】:

我目前正在学习 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 = 专辑(artist="Madonna",title="SomeTitle",genre="pop") a.save()

这样就保存了。

现在我如何插入到 Song 表中? 我以前的条目是这样的

a = Album.objects.get(artist__iexact="Madonna")

我认为我可以这样做的一种方法

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

如何保存歌曲

【问题讨论】:

    标签: django orm django-queryset


    【解决方案1】:

    你可以通过

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

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

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

    【讨论】:

    • 我不能使用`>> a = Album.objects.get(artist__iexact="madonna")`获取对象的实例吗?
    • @jamesFranco 是的,您可以,但请确保在这种情况下拼写必须正确,因为您正在执行完全匹配。
    【解决方案2】:

    外键需要对象的pk。使用a.id 而不是a

    【讨论】:

    • 我得到IntegrityError: NOT NULL constraint failed: music_song.album_ida.id
    猜你喜欢
    • 2020-03-24
    • 2018-04-06
    • 2021-07-06
    • 1970-01-01
    • 2017-02-19
    • 2014-07-15
    • 1970-01-01
    • 2017-08-17
    • 2011-05-16
    相关资源
    最近更新 更多