gpt4 book ai didi

django - 在 Django 表单中预选多个复选框

转载 作者:行者123 更新时间:2023-12-01 14:49:53 24 4
gpt4 key购买 nike

非常类似于this question ,但我尝试了接受的答案,但没有用。这是正在发生的事情。

我有一个用于在照片中标记人物的表单,如下所示:

forms.py

class TaggingForm(forms.Form):
def __init__(self, *args, **kwargs):
queryset = kwargs.pop('queryset')
super(TaggingForm, self).__init__(*args, **kwargs)
self.fields['people'] = forms.ModelMultipleChoiceField(required=False, queryset=queryset, widget=forms.CheckboxSelectMultiple)
...

模型.py

class Photo(models.Model):
user = models.ForeignKey(User)
...

class Person(models.Model):
user = models.ForeignKey(User)
photos = models.ManyToManyField(Photo)
...

我希望用户在最初标记照片后能够编辑照片上的标签,因此我有一个页面,他们可以在其中查看单张照片并编辑其标签。出于显而易见的原因,我希望预先选中已标记个人的复选框。我试图通过为表单的初始字典提供我想要选择的人员列表来做到这一点,就像我在上面链接的问题的答案中一样。

views.py

def photo_detail(request,photo_id):

photo = Photo.objects.get(id=photo_id)

initial = {'photo_id':photo.id, 'people':[p for p in photo.person_set.all()]}
form_queryset = Person.objects.filter(user=request.user)

if request.method == "POST":
form = TaggingForm(request.POST, queryset=form_queryset)
# do stuff
else:
form = TaggingForm(initial=initial, queryset=form_queryset)
...

当我尝试按照上面的代码初始化 people 时,表单没有显示,但也没有抛出任何错误。如果我从初始字典中取出“人”键/值对,表单显示正常,但没有任何人检查。如果重要的话,我也在使用 Django 1.5。提前致谢。

最佳答案

您可以做的就是简单地使用 django 表单来为您处理所有这些。请引用这个question .理想情况下,它归结为让 djnago 处理您的表单及其验证和初始值。

现在这实际上是一个很好的习惯,因为您正在剖析所有逻辑和演示文稿。这是一个伟大的 DRY 原则。

关于django - 在 Django 表单中预选多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17816061/

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