在一个模型表中以一种形式编辑许多对象的版本。 Django的

时间:2019-02-15 11:31:25

标签: django forms

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

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

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

任何帮助将不胜感激。

我的模型。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})

1 个答案:

答案 0 :(得分:0)

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

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'))