如何将模型数据直接放入另一种形式';Django中的输入?

如何将模型数据直接放入另一种形式';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

我创建了一个注册页面和一个结帐页面(代码中名为thankyou),然后将支付网关API与结帐页面的表单集成在一起。 我遇到的问题是,我想从我为注册页面创建的另一个模型的属性中选择付款金额

为了清楚起见,我想使用用户刚刚在注册页面(forms.html)中输入的
会员资格
模型数据,并将其放入
谢谢
函数的
金额
变量中

这是模型

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请考虑接受/投票的答案,如果你认为它是正确的/有帮助的。当然,这是一个很大的帮助。