我的项目有两个步骤:1)订单模型的数据库入口2)交易配置文件的数据库入口。同时1)将使用外键更新为2)
我尽量保持我的view.py尽可能干净并修改了save()函数。但是,我已经读到这并不总是被推荐,我想知道你是否对我的方法有任何反馈,或者你是否会做任何不同的。
views.py
def checkout_page(request):
session_order_id = request.session['order_id']
if request.POST:
transaction_profile = TransactionProfileModelForm(request, request.POST)
if transaction_profile.is_valid():
t = transaction_profile.save(commit=False)
t.save()
else:
transaction_profile = TransactionProfileModelForm(request)
forms.py
from orders.models import Order
class TransactionProfileModelForm(forms.ModelForm):
email_confirm = forms.EmailField()
class Meta:
model=TransactionProfile
fields = [
'email',
'email_confirm',
'address_line_1',
'address_line_2',
'city',
'country',
'postal_code',
'state'
]
def __init__(self, request, *args, **kwargs):
self.request = request
super(TransactionProfileModelForm, self).__init__(*args, **kwargs)
def save(self, commit=True):
obj = super(TransactionProfileModelForm, self).save(commit=False)
if commit:
obj.save()
request = self.request
session_order_id = request.session['order_id']
o = Order.objects.get(order_id=session_order_id)
o.transaction_profile = obj
o.save()
return obj