python - 在 django 中使用 forrm.py 将登录用户 ID 自动保存为外键
问题描述
`如何在django中使用form.py文件提交自动将当前活动用户的user_id作为外键的表单
表格.py:
from django import forms
from .models import BBB
from django.contrib.auth.models import User
class AdminBModelForm(forms.ModelForm):
class Meta:
model = BBB
fields = ['id','content','user_id']
模型.py:
from django.db import models
from django.contrib.auth.models import User
class BBB(models.Model):
user_id = models.ForeignKey(User, related_name='bs',
on_delete=models.CASCADE)
content = models.TextField()
视图.py:
from django.shortcuts import render,redirect
from .models import BBB
from . forms import AdminBModelForm
from django.http import HttpResponse
# Create your views here.
def index(request):
if request.method == 'POST':
form = AdminBModelForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('success')
else:
form = AdminBModelForm()
return render(request, 'index.html', {'form' : form})
def success(request):
return HttpResponse('successfully uploaded') \
索引.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form method = "post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.content }}
<button type="submit">Upload</button>
</form>
</body>
</html>
此表单只需要一个字段内容和自动保存用户登录 ID
解决方案
之前form.save()
,做form.instance.user_id = request.user
。
顺便说一句,最好将该字段重命名为 justuser
而不是user_id
.
推荐阅读
- forms - 在 ZF2 表单中的输入字段周围添加 div
- javascript - 如何构建 JavaScript 回调队列并使用最终回调执行它
- c - 如何从文件加载到结构C的动态数组
- node.js - BrowserSync:本地安装后找不到命令
- javascript - 如何在组件触发的函数中使用动作?
- python-2.7 - 如何解决使用 4.0.0 和 python 2.7.x 创建 Conda 环境时发生的“依赖项缺失”错误
- java - Tinychat.com 机器人
- python - 从给定的数据框创建两个数据框
- c - 比较期间指针地址意外更改
- c# - 我想知道如何从一个函数返回几个对象(一个数据表和一个堆栈)?