Я ищу наиболее целесообразный метод для хранения имени пользователя, ответственного за отправку формы, чтобы я мог легко организовать формы, которые они отправили по своему имени пользователя, как «настройка учетной записи» для каждого пользователя.Сохраните пользователя, который отправил форму в ту же таблицу?
Я искал, но решение очень фрагментировано, и все сообщения об этом относятся к более старым версиям, а также лучшее решение, изменяющееся в каждой версии Django. Вероятно, это не помогает, что я все еще изучаю основы Django.
Вот мой views.py:
def add(request):
title = 'Add Reddit Account'
# ADD FORM
form = AddRedditForm(request.POST or None)
instance = form.save(commit=False)
instance.user = request.user
instance.save()
if request.method == "POST":
print(request.POST)
context = {
"form": form,
"title": title,
"user": instance.user
}
return render(request, "addreddit/add.html", context)
и мой models.py:
from django.db import models
class Account(models.Model):
user_name = models.CharField(max_length=20)
password = models.CharField(max_length=18)
secret = models.CharField(max_length=100)
tag = models.CharField(max_length=20, blank=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
user = models.ForeignKey('auth.User', null=True)
def __str__(self): #Python 3.3 is __str__
return str(self.user)
return self.user_name
return self.password
return self.secret
return self.tag
return self.timestamp
Наконец, forms.py в том случае, если это релевантно:
from django import forms
from .models import Account
class AddRedditForm(forms.ModelForm):
class Meta:
model = Account
fields = ['user_name','password','secret','tag']
user_name = forms.CharField(required=True)
password = forms.CharField(widget=forms.PasswordInput,required=True)
secret = forms.CharField(required=True)
tag = forms.CharField(required=False)
Возможно, это работает очень хорошо, кроме только вещь, сохраненная в форме, является пользователем, а не другой информацией.
рекомендуется редактировать:
from django.conf import settings
from django.core.mail import send_mail
from django.shortcuts import render, redirect
from .forms import AddRedditForm
# Create your views here.
def add(request):
title = 'Add Reddit Account'
# ADD FORM
if request.method == "POST":
form = AddRedditForm(request.POST or None)
print(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
return redirect('addreddit/add')
context = {
"title": title,
"user": request.user, # not available if you haven't submitted the form
"form": form
}
return render(request, "addreddit/add.html", context)
Exception Значение: локальная переменная «форма», на который ссылается перед тем назначением - addreddit/views.py в оных, строка 21 - Благодаря, если заявление, форма не существует до логики и не может быть передан модели. –
Хм. В обоих предложениях моей инструкции if-else присваивается 'form'. Вы вообще изменили это предложение? – nimasmi
Какая строка выше соответствует вашей строке 21? – nimasmi