在Django中如何在一篇文章中添加图片和文字

1 投票
2 回答
760 浏览
提问于 2025-04-18 13:41

我有两个不同的类,一个是用来处理帖子(post),另一个是用来处理图片(image)。但是我希望把这两个合并成一个类,这样我就可以在管理网站上添加帖子的时候,同时添加与这个帖子相关的图片。而且,我还想把图片显示在标题旁边。

class Post(models.Model):
    title = models.CharField(max_length=140)
    body = models.TextField()
    date = models.DateTimeField()



    def __unicode__(self):
        return self.title


class Image(models.Model):
    image = models.ImageField(upload_to='%Y/%m/%d') 

2 个回答

0

你有没有更新数据库?在你的 blog_post 表里应该有一个 post_image_id 字段。这和你遇到的“没有这个列”的错误有关。如果你使用的是 Django 1.6 或更早的版本,运行 ./manage.py syncdb 是不会更新你的数据库表的。你需要使用 South 工具,或者手动更新你的数据库。

如果你解决了没有列的错误,就可以给帖子添加图片了。(可以参考 Lafada 的例子)

如果你想要有一个多对多的关系,并且给你的帖子添加多张图片。

image_a = Image()
image_b = Image()
blog = Blog().save() # You must save a blog before adding images in a m2m relation.
blog.images.add(image_a)
blog.images.add(image_b)

或者

blog = Blog().save()

for image in images:
  blog.images.add(image)

blog.save()
0

你可以使用 OneToOne 关系。

class Image(models.Model):
    image = models.ImageField(upload_to='%Y/%m/%d') 


class Post(models.Model):
    title = models.CharField(max_length=140)
    body = models.TextField()
    date = models.DateTimeField()
    post_image = models.OneToOneField(Image)



    def __unicode__(self):
        return self.title

撰写回答