Как моя форма django может получить текущее имя пользователя и email и отправить их в другую таблицу базы данных?
В моем проекте django есть форма VisitorRegForm
, которая собирает scanned_id
и body_temp
и отправляет данные в таблицу базы данных ClinicalData
, поскольку текущий пользователь уже вошел в систему, как я могу сделать так, чтобы эта форма также могла получить данные текущего вошедшего пользователя username
и email
(Примечание: username
и email
были созданы из встроенной модели django User) и отправлять эти четыре элемента: 'scanned_id', 'body_temp', 'username', 'email'
в таблицу базы данных ClinicalData
?
Не обращайте внимания на отсутствующие детали и инпорты, форма работает и я могу отправить 'scanned_id', 'body_temp'
. Помогите мне найти самый простой способ, с помощью которого я смогу отправить эти четыре элемента: 'scanned_id', 'body_temp', 'username', 'email'
, глядя на детали, показанные в файлах ниже:
Где проще этого добиться: в файле views.py или в файле шаблона?
forms.py
class VisitorRegForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class ScannerForm(ModelForm):
class Meta:
model = ClinicalData
fields = ['scanned_id', 'body_temp', 'username', 'email']
models.py
class ClinicalData(models.Model):
...
scanned_id = models.CharField(verbose_name="Scanned ID", max_length=50, null=True)
body_temp = models.DecimalField(verbose_name="Body Temperature", max_digits=3, decimal_places=1, null=True)
username = models.CharField(verbose_name="Facility Name", max_length=200, null=True)
email = models.EmailField(verbose_name="Visitor Email", max_length=200, null=True)
...
views.py
Предполагаю, что мне может понадобиться две переменные здесь в представлениях, которые должны помочь мне, как те, которые я закомментировал, если это должно начинаться отсюда, помогите мне, как это должно быть успешным:
@login_required(login_url='login')
def scanEnter(request):
#grab_username = function_to_grab_current_logged_in_username_HELP_ME_HERE
#grab_email = function_to_grab_current_logged_in_user_email_HELP_ME_HERE
form = ScannerForm(request.POST)
if request.method == 'POST':
form = ScannerForm(request.POST)
if form.is_valid():
form.save()
return redirect('scanenter')
context = {'form': form}
return render(request, 'scan_enter_fac.html', context)
scan_enter_fac.html
<form action="" method="post">
{% csrf_token %}
<div class="">scanned_id<input type="text" id="multiple" class="form-control" placeholder="or Type ID here; e.g: ACCTS-147" name="scanned_id"></div>
<div class="">body_temp<input type="text" class="form-control" placeholder="e.g: 36.5" name="body_temp"></div>
<button type="submit" class="btn btn-danger btn-block">Submit</button>
</form>
Заранее спасибо.
views.py:
@login_required(login_url='login')
def scanEnter(request):
#grab_username = function_to_grab_current_logged_in_username_HELP_ME_HERE
#grab_email = function_to_grab_current_logged_in_user_email_HELP_ME_HERE
form = ScannerForm(request.POST)
if request.method == 'POST':
form = ScannerForm(request.POST)
if form.is_valid():
form = form.save(commit=False)
form.username = request.user.username #new
form.email = request.user.email #new
form.save()
return redirect('scanenter')
context = {'form': form}
return render(request, 'scan_enter_fac.html', context)
scan_enter_fac.html
<form action="" method="post">
{% csrf_token %}
<div class="">{{ form.scanned_id }}</div>
<div class="">{{ form.body_temp }}</div>
<button type="submit" class="btn btn-danger btn-block">Submit</button>
</form>