我想创建一个类似facebook/twitter的功能来创建一个帖子。我有一个类似example.com/username/posts/create
的url smth,它的表单与帖子模型相关。正如你可能知道的,在普通的ImageField和FileField中没有上传多个项目的能力,也没有像样的编辑器来拖放类似的东西。拖放不是一个关键的功能,但我真的想处理与twitter/facebook一样的编辑器不知何故。与所有它的方便按钮的照片/视频/文件。
我看到有一堆自定义编辑器像DJANGO-CKEDITOR等,但我不明白它应该如何工作,无论如何与一个图像/文件字段.也许,有人面临的问题?
附上我的表格和模型,以防有帮助:
Models.py
class Post(models.Model):
title = models.CharField(max_length=200, null=True, blank=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
images = models.ImageField(null=True, blank=True, upload_to="posts/images")
body = models.TextField(max_length=255)
post_date = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
likes = models.ManyToManyField(User, through='UserPostRel', related_name='likes')
forms.py
class PostCreationForm(ModelForm):
class Meta:
model = Post
fields = [
'title',
'body',
'images',
]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['title'].label = "Title"
self.fields['body'].label = "Body"
self.fields['images '].label = "images"
1条答案
按热度按时间wj8zmpe11#
通常这是通过一个额外的模型来完成的:
然后我们创建一个小表单来处理批量上传:
然后在视图中,我们让表单处理这个问题:
注意:通常使用**
settings.AUTH_USER_MODEL
[Django-doc]来引用用户模型比直接使用User
*模型[Django-doc]要好。更多信息请参见文档的 * refering theUser
model 部分。