python - 将上传的文件连接到 Django 中的帖子
问题描述
我正在尝试将上传的文档与 Django 中的相关帖子连接起来。这个想法是,当用户创建一个帖子(我在我的代码中将其称为种子)时,如果他愿意,他可以上传一个文档。我尝试使用联合方法这样做,但它不起作用(告诉我它需要一个“str”而不是一个“int”,或者告诉我 ForeignKey 条件不起作用)。有什么办法可以连接这两个类,并成功上传文件?感谢您的任何帮助!!
这是我尝试过的:
视图.py
"""
def seed_create(request):
if request.method == "POST":
seed_form = SeedForm(request.POST)
docu_form = DocumentForm(request.POST, request.FILES)
if seed_form.is_valid() and docu_form.is_valid():
seed_form.instance.user = request.user
docu_form.save()
seed_form.save()
messages.success(request, 'Your seed was successfully created!')
return redirect('seed:view_seed')
else:
messages.error(request, 'Please correct the error below.')
else:
seed_form = SeedForm(request.POST)
docu_form = DocumentForm(request.POST, request.FILES)
return render(request, "seed/create.html", context={"seed_form": seed_form, "docu_form": docu_form})
"""
模型.py
"""
def gallery_folder(instance, file):
return '/'.join(['documents', instance.seed_related_id, file])
class Document(models.Model):
seed_related = models.ForeignKey(Seed,on_delete=models.CASCADE,default=1)
description = models.CharField(max_length=255, blank=True)
file = models.FileField(default="No file",upload_to=gallery_folder)
uploaded_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
"""
表格.py
"""
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
fields = ('description', 'file')
"""
解决方案
您需要通过以下表单将 链接seed_related
到Seed
您构建的:
def seed_create(request):
if request.method == 'POST':
seed_form = SeedForm(request.POST, request.FILES)
docu_form = DocumentForm(request.POST, request.FILES)
if seed_form.is_valid() and docu_form.is_valid():
seed_form.instance.user = request.user
seed = seed_form.save()
docu_form.instance.seed_related = seed
docu_form.save()
messages.success(request, 'Your seed was successfully created!')
return redirect('seed:view_seed')
else:
messages.error(request, 'Please correct the error below.')
else:
seed_form = SeedForm()
docu_form = DocumentForm()
return render(
request,
'seed/create.html',
context={'seed_form': seed_form, 'docu_form': docu_form}
)
推荐阅读
- firebase - 使用事务实时数据库将点从用户移动到另一个用户
- c# - Docker:dotnet ef 数据库更新失败
- c# - 通过强绑定列表填充 VueJS 数据属性
剃刀视图中的 DOM - bytecode - ASM:如何查找 ALOAD 中包含的对象类型
- javascript - 使用 Cordova(ios 和 android)托管网页的最佳配置是什么
- apache-spark - 如何从数据框转换为 RDD 并使用案例类返回
- python - 提取列表中具有特定元素的行
- sql-server - 获取动态数据透视结果到临时表 SQL Server
- git - Git 存储库中的 Git 存储库,用于客户端使用分发文件
- java - 如何改进 Java 泛型通配符签名