Django:通过save()连接两个模型

时间:2018-05-04 09:15:58

标签: django

我的项目有两个步骤: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

0 个答案:

没有答案