首页 > 解决方案 > 在 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

标签: pythondjangodjango-forms

解决方案


之前form.save(),做form.instance.user_id = request.user

顺便说一句,最好将该字段重命名为 justuser而不是user_id.


推荐阅读