【问题标题】:Edition of many objects in one model table in one form. Django以一种形式在一个模型表中编辑多个对象。姜戈
【发布时间】:2019-02-15 11:31:24
【问题描述】:

我有一个非常简单的表单来编辑表格中的一个字段,它看起来像这样。

class TimeEditForm(forms.ModelForm):
    class Meta:
        model = Time
        fields = ('free_or_no',)

现在我想创建一个视图,其中我有来自一个表的许多对象,并且我的所有查询集都可以在一个地方进行编辑。如何将多个对象转移到单元版本? 我在论坛上寻找答案,但他们主要是指一个表格编辑多个模型,而不是一个表中的多个对象。

任何帮助将不胜感激。

我的models.py

class Time(models.Model):
    day_time = models.ForeignKey(DayTime, on_delete=models.CASCADE)
    compartment = models.CharField(max_length=11)
    free_or_no = models.BooleanField(default=True)

views.py

def time_edit(request):
    time = get_object_or_404(Time, pk=pk) # how to replace it correctly in the query set collections, what can I use? like this Time.objects.all()[:12]
    if request.method == "POST":
        form = TimeEditForm(request.POST, instance=time)
        if form.is_valid():
            time = form.save(commit=False)
            time.save()
            return redirect('account')
    else:
        form = TimeEditForm(instance=time)
    return render(request, 'time_edit.html', {'form': form})

【问题讨论】:

标签: django forms


【解决方案1】:

这是以一种形式编辑多个对象的整个代码。

test = Time.objects.filter(day_time__day_name='Monday')
TimeFormSet = modelformset_factory(Time, fields=('free_or_no',))
if request.method == "POST":
    formset = TimeFormSet(
        request.POST,
        queryset=Time.objects.filter(day_time__day_name='Monday'),
    )
    if formset.is_valid():
        formset.save()
        return HttpResponseRedirect(reverse('app:account'))
else:
    formset = TimeFormSet(queryset=Time.objects.filter(day_time__day_name='Monday'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2019-07-12
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多