Python 允许用户仅输入django model creaton表单的一部分(在用户提交表单后添加到表单)
如何向用户提交的表单添加数据?我希望用户在表单中填写“名称”和“完成”,并自动添加“用户”(创建者)和“董事会” 代码:Python 允许用户仅输入django model creaton表单的一部分(在用户提交表单后添加到表单),python,django,django-models,django-views,django-forms,Python,Django,Django Models,Django Views,Django Forms,如何向用户提交的表单添加数据?我希望用户在表单中填写“名称”和“完成”,并自动添加“用户”(创建者)和“董事会” 代码: 您可以编辑包装在表单中的实例: from django.shortcuts import get_object_or_404 @login_required(login_url='loginPage') def taskAdd(request, pk): board = get_object_or_404(Board, user=request.user, pk=p
您可以编辑包装在表单中的实例:
from django.shortcuts import get_object_or_404
@login_required(login_url='loginPage')
def taskAdd(request, pk):
board = get_object_or_404(Board, user=request.user, pk=pk)
form = AddTaskForm()
if request.method == 'POST':
form = AddTaskForm(request.POST)
if form.is_valid():
form.instance.user = request.user
form.instance.board_id = pk
form.save()
return redirect('insideBoard', pk)
context = {'form': form}
return render(request, 'tasks/taskAdd.html', context)
从django.shortcuts导入get\u object\u或\u 404
@需要登录(登录url='loginPage')
def任务添加(请求,主键):
board=获取对象或404(board,user=request.user,pk=pk)
form=AddTaskForm()
如果request.method==“POST”:
form=AddTaskForm(request.POST)
如果form.is_有效():
form.instance.user=request.user
form.instance.board_id=pk
form.save()
返回重定向('insideBoard',主键)
上下文={'form':form}
返回渲染(请求'tasks/taskAdd.html',上下文)
注意:使用, 然后直接使用。如果对象不存在, 例如,由于用户自己更改了URL,
get\u object\u或_404(…)
将返回HTTP 404 Not Found响应,而使用
.get(…)
将导致HTTP 500服务器错误
#forms.py
class AddTaskForm(ModelForm):
class Meta:
model = Task
fields = "__all__"
exclude = ('user', 'board',)
#models.py
class Board(models.Model):
title = models.CharField(max_length=50, null=True)
user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
def __str__(self):
return self.title
class Task(models.Model):
title = models.CharField(max_length=200, null=True)
done = models.BooleanField(default=False, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
board = models.ForeignKey(Board, null=True, on_delete=models.CASCADE)
def __str__(self):
return self.title
from django.shortcuts import get_object_or_404
@login_required(login_url='loginPage')
def taskAdd(request, pk):
board = get_object_or_404(Board, user=request.user, pk=pk)
form = AddTaskForm()
if request.method == 'POST':
form = AddTaskForm(request.POST)
if form.is_valid():
form.instance.user = request.user
form.instance.board_id = pk
form.save()
return redirect('insideBoard', pk)
context = {'form': form}
return render(request, 'tasks/taskAdd.html', context)