【发布时间】:2021-11-17 13:55:37
【问题描述】:
我设法将用户选择的类别存储并更新到数据库中。现在,一旦用户再次查询表单,我想使用此选择预填充 MultipleChoiceSelect。
所以我当前的表单将始终返回所有可用的类别。如何将用户的个人选择应用于此,以便在 DOM 中预先选择他的最后一个选择?
# Models
class UserCategoryFilter(models.Model):
"""
Saves the selected category filter by a user
"""
user = models.ForeignKey(Account, on_delete=models.CASCADE)
categories_selected = models.CharField(max_length=2000)
class Category(models.Model):
"""
Model to store all available categories
"""
poller_category = models.CharField(max_length=30)
# Form
class SelectCategoryForm(forms.Form):
choices = forms.ModelMultipleChoiceField(queryset=Category.objects.all(),
widget=forms.CheckboxSelectMultiple)
# View
@require_POST
def save_category_filter(request):
[..]
# Get the form instance
filter_form = SelectCategoryForm(request.POST)
# Form validation
if filter_form.is_valid():
# Get the cleaned data
selection = filter_form.clean()
# Check if user already has a filter instance
instance_exists = UserCategoryFilter.objects.filter(user=request.user)
# If not create, else update
if not instance_exists:
filter_instance = UserCategoryFilter(user=request.user,
categories_selected=selection)
filter_instance.save()
else:
# Update existing instance
UserCategoryFilter.objects.filter(user=request.user).update(categories_selected=selection)
pass
[..]
这是categories_selected中当前保存用户选择的方式:
{'choices': <QuerySet [<Category: Sports>, <Category: Lifestyle>]>}
【问题讨论】:
-
你能分享
GET的观点吗?
标签: django django-forms django-queryset