在Django中如何在一篇文章中添加图片和文字
我有两个不同的类,一个是用来处理帖子(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