gpt4 book ai didi

python - 带有对象列表的 Django 表单

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:05 24 4
gpt4 key购买 nike

我在提交后从 Django 表单取回对象时遇到问题。

我有一个由另一个 python 包填充的对象列表(填充有 MyObject,而不是 django 模型)。

models.py 中,我有:

class MyObjectForm(forms.Form):

def __init__(self, *args, **kwargs):
# Get the list
myobjects = kwargs.pop('myobjects')
super(MyObjectForm, self).__init__(*args, **kwargs)
choices = [(o, o.name) for o in myobjects]
self.fields["my_objects"] = forms.TypedChoiceField(choices=choices)

有关信息,HTML 看起来不错。

views.py 中,当我点击提交按钮时,form.is_valid() 总是 False。有问题吗?

当我更改 models.py 时:

self.fields["my_objects"] = forms.TypedChoiceField(choices=choices, required=False)

views.py 中,form.is_valid()True 但我无法取回我的对象​​ MyObject(我得到一个空值)。那可能吗 ?如果是,我该怎么做?

最佳答案

看看您用作选择的是什么... MyObject 实例,真的吗? MyObject 实例应该如何作为 HTML 表单的一部分发送到浏览器,然后通过 POST 请求正文返回到您的服务器?

如果您的每个 MyObject 实例都有一些持久的唯一标识符,请使用它作为您的选择,即

choices = [(o.some_stable_and_unique_id, o.name) for o in myobjects]

请注意,它不会解决您所有的问题......然后您必须继承 TypedChoiceField 以根据其“id”等检索对象。

关于python - 带有对象列表的 Django 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com