如何将模型数据直接放入另一种形式';Django中的输入?
我创建了一个注册页面和一个结帐页面(代码中名为thankyou),然后将支付网关API与结帐页面的表单集成在一起。 我遇到的问题是,我想从我为注册页面创建的另一个模型的属性中选择付款金额 为了清楚起见,我想使用用户刚刚在注册页面(forms.html)中输入的如何将模型数据直接放入另一种形式';Django中的输入?,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我创建了一个注册页面和一个结帐页面(代码中名为thankyou),然后将支付网关API与结帐页面的表单集成在一起。 我遇到的问题是,我想从我为注册页面创建的另一个模型的属性中选择付款金额 为了清楚起见,我想使用用户刚刚在注册页面(forms.html)中输入的会员资格模型数据,并将其放入谢谢函数的金额变量中 这是模型 from django.db import models # Create your models here class MyUser(models.Model): i
会员资格
模型数据,并将其放入谢谢
函数的金额
变量中
这是模型
from django.db import models
# Create your models here
class MyUser(models.Model):
image = models.ImageField(upload_to='profile_pics',blank=True)
Full_name = models.CharField(max_length=256)
GENDER = (('M','Male'),('F','Female'),('O','Other'))
gender = models.CharField(max_length=1, choices=GENDER, null=True)
Phone_Number = models.CharField(max_length=12,unique=True)
Email = models.EmailField(max_length=264,unique=True)
Country = models.CharField(max_length=264)
State = models.CharField(max_length=264)
City = models.CharField(max_length=264)
Address = models.CharField(max_length=2048)
MEMBERS = [
('2100','2100 Rs Lifetime Membership'),
('21000','21000 Rs Lifetime Patron Membership'),
('100000','1Lakh Rs S.A.F Trustee'),
('1100000','11Lakh Rs S.A.F Patron Trustee'),
('5100000','51Lakh Rs S.A.F Board of Trustee'),
]
Membership = models.CharField(max_length=6,choices=MEMBERS, null=True)
CAREERS = [
('BI','Business & Industry'),
('JL','Judicial & Legal Services'),
('BP','Bureaucrats & Public Servant'),
('DP','Defence, Police & Paramilitary Forces'),
('NC','NCC Cadets'),
('VJ','VIPR Jan(Pujari/Brahmins)'),
('PR','Public Representatives'),
('NF','Nandanaar Families'),
('SO','Social Organisations'),
('DO','Doctors'),
('YO','Youths'),
('OT','Others'),
]
Career = models.CharField(max_length=264,choices=CAREERS,null=True)
def __str__(self):
return str(self.Full_name)
这是视图.py
from django.shortcuts import render,reverse
from form.models import MyUser
from form.forms import NewUserForm, PaymentForm
from django.http import HttpResponseRedirect
from instamojo_wrapper import Instamojo
# Create your views here.
def thankyou(request):
form = PaymentForm(request.POST)
if request.method == 'POST':
print("\n\n"+str(request.POST))
form = PaymentForm(request.POST)
if form.is_valid():
data = form.cleaned_data
response = api.payment_request_create(
amount = str(data['amount']),
purpose = data['purpose'],
send_email = False,
send_sms = False,
email = data['email'],
buyer_name = data['name'],
phone = data['contact_no'],
redirect_url = "http://www.example.com/handle_redirect.py"
)
return HttpResponseRedirect(response['payment_request']['longurl'])
else:
form = PaymentForm()
return render(request, 'thankyou.html', {'form' :form})
def users(request):
form = NewUserForm()
if request.method == 'POST':
form = NewUserForm(request.POST)
if form.is_valid():
form.save(commit=True)
return HttpResponseRedirect(reverse('thankyou'))
else:
print("FORM INVALID!")
return render(request,'forms.html', {'form':form})
这是表格
from django import forms
from .models import MyUser
class NewUserForm(forms.ModelForm):
Career = forms.ChoiceField(widget=forms.Select,choices=MyUser.CAREERS,label='What Best Describes
You?')
class Meta():
model = MyUser
fields = '__all__'
class PaymentForm(forms.Form):
name = forms.CharField(label = "Name", max_length = 30)
email = forms.EmailField(label = "Email")
contact_no = forms.IntegerField(label = "Your contact no" , )
amount = forms.IntegerField(label = "Amount")
purpose = forms.CharField(label = "Purpose" , max_length = 200)
似乎您正在使用自定义用户模型,如果您正确地使用了该模型(似乎不是这样,您的
MyUser
没有扩展Django的用户模型),那么您就有了一个与您的请求关联的user
实例。使用它来查询所需的字段表单MyUser
由于我没有看到MyUser和authenticated user之间的任何链接,所以我假设他们至少都有相同的电子邮件
def thankyou(request):
user = request.user
my_user = MyUser.objects.filter(email=user.email)
membership = my_user.Membership
# rest of the code
好的,我如何在MyUser中扩展Django的用户模型呢?OnetoOne还是Foreignkey?跟着这个。它有详细的描述。谢谢你的帮助。这个博客将非常有用。我将从一开始就创建一个应用程序,扩展Django的用户模型。@ MaTaVYA.X请考虑接受/投票的答案,如果你认为它是正确的/有帮助的。当然,这是一个很大的帮助。