如何使用用户数据填充(填充数据)模型?
How to populate(get the data filled) the modelform with the user data?
这是我的models.py
。
from django.db import models
from django.contrib.auth.models import User
class User_data(models.Model):
user_ID = models.CharField(max_length = 20)
name = models.CharField(max_length = 50)
user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
def __str__(self):
return self.name
这是我的forms.py
from django import forms
from lrequests.models import User_data
class UserForm(forms.ModelForm):
class Meta:
fields = ("name", "user_ID")
model = User_data
这是我的views.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import UserForm
from django.shortcuts import render_to_response
from .models import User_data
def get(request):
form_class = UserForm
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
data = form.save(commit = False)
data.user = request.user
form.save()
return HttpResponse("Sucessfully submitted")
else:
form = UserForm()
return render(request, "request_form.html", {'form' : form_class})
#update
def auto_fill_form(request):
form = UserForm(initial = dict(name = request.user.first_name))
context = dict(form=form)
return render(request, "request_form.html", context)
现在,我尝试填充在创建帐户时指定的用户数据。因此,他(用户)不会篡改数据(因为它需要只读)并且它会自动填充而无需用户提供输入。我已阅读 django 文档,但它仅指定动态初始化数据
see here。我试过将该代码放入 forms.py,但没有成功。
我什至在 HTML 模板中尝试过,也没有用。
{% csrf_token %}
<div class="form-row">
{{ form.name.errors }}
{{ form.name.label_tag }} {{ form.name = user.first_name }}
</div>
{% comment %} {{ form.as_p }} {% endcomment %}
默认情况下如何将数据获取到表单中?
有人可以帮我解决这个问题吗?
只需更换
else:
form = UserForm()
return render(request, "request_form.html", {'form' : form_class})
作者:
else:
return auto_fill_form(request)
这是我的models.py
。
from django.db import models
from django.contrib.auth.models import User
class User_data(models.Model):
user_ID = models.CharField(max_length = 20)
name = models.CharField(max_length = 50)
user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
def __str__(self):
return self.name
这是我的forms.py
from django import forms
from lrequests.models import User_data
class UserForm(forms.ModelForm):
class Meta:
fields = ("name", "user_ID")
model = User_data
这是我的views.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import UserForm
from django.shortcuts import render_to_response
from .models import User_data
def get(request):
form_class = UserForm
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
data = form.save(commit = False)
data.user = request.user
form.save()
return HttpResponse("Sucessfully submitted")
else:
form = UserForm()
return render(request, "request_form.html", {'form' : form_class})
#update
def auto_fill_form(request):
form = UserForm(initial = dict(name = request.user.first_name))
context = dict(form=form)
return render(request, "request_form.html", context)
现在,我尝试填充在创建帐户时指定的用户数据。因此,他(用户)不会篡改数据(因为它需要只读)并且它会自动填充而无需用户提供输入。我已阅读 django 文档,但它仅指定动态初始化数据 see here。我试过将该代码放入 forms.py,但没有成功。
我什至在 HTML 模板中尝试过,也没有用。
{% csrf_token %}
<div class="form-row">
{{ form.name.errors }}
{{ form.name.label_tag }} {{ form.name = user.first_name }}
</div>
{% comment %} {{ form.as_p }} {% endcomment %}
默认情况下如何将数据获取到表单中? 有人可以帮我解决这个问题吗?
只需更换
else:
form = UserForm()
return render(request, "request_form.html", {'form' : form_class})
作者:
else:
return auto_fill_form(request)