通过Django表单传递对象

2024-07-01 08:14:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过窗体传递对象,但它对我无效。在models中,我的订阅模型有一个Customer模型引用,每当我想要创建或更新订阅时,我都需要包含与之关联的客户。在

class Subscription(StripeObject):

    sub_user        = models.ForeignKey(Customer)
    creation_date   = models.DateTimeField(auto_now_add=True)

在我看来,我得到了我需要的一切,在我的模板中,我试图从我的视图中传递customer对象作为表单输入字段之一。在

^{pr2}$

模板:配置文件.html在

{% with cus=customer %}
<input type="hidden" id="sub_user" name="sub_user" value="{{cus}}">
{% endwith %}

形式:

class AddSubscription(forms.ModelForm):

    sub_user = forms.ModelChoiceField(queryset=Customer.objects.none())

    class Meta:
        model = Subscription
        fields = ['sub_user']

    def __init__(self, *args, **kwargs):
        super(AddSubscription, self).__init__(*args, **kwargs)

这张表格显然无效。我已经尝试过使用ModelChoiceField,但没有成功,我可以确认我正在使用的订阅和Customer对象都存在。有什么想法吗?以前有人见过这个问题吗?如何通过窗体传递ForeignKey Customer对象?在


Tags: 对象模型模板modelsformscustomer窗体class
1条回答
网友
1楼 · 发布于 2024-07-01 08:14:05

您将向模板传递一个Python对象,Django将尝试将其呈现为HTML并在httppost中返回。但是,无论是HTML还是HTTP都不知道客户对象是什么;您只会得到对象的字符串表示形式。在

您可以通过传递客户id来解决这个问题,但是绝对没有意义。您根本不需要在表单之间传递客户信息;当您在get上实例化表单时,您可以在POST上执行完全相同的操作。在

相关问题 更多 >

    热门问题