当我更新模型的字段时,将删除所有其他字段

时间:2017-11-09 21:32:26

标签: python django

如果我更新f1,则删除f2,如果更新f2,则删除f1 ... 如何改变未更改的字段?

抱歉我的英语很糟糕

views.py

def edit_iscrizioni(request, corso_id):
    corsi = Corso.objects.filter( pk=corso_id)
    fasca = Corso.objects.get( pk=corso_id)
    tabella= Iscrizione.objects.filter(user=request.user)
    iscrizione=get_object_or_404(Iscrizione, pk=tabella)

    if request.method == "POST":
        form = IscrizioneForm(request.POST, instance= iscrizione)
        if form.is_valid():
            iscrizione = form.save(commit=False)
            iscrizione.user = request.user
            iscrizione.published_date = timezone.now()
            if fasca.progressivo:
                if fasca.f1:
                    iscrizione.corso1_id= corso_id
                if fasca.f2:
                    iscrizione.corso2_id= corso_id

            form.save()


        return redirect('privata')

    else:
        form = IscrizioneForm(instance= iscrizione)
    return render(request, 'corsi/edit.html', {'form':form, 'corsi':corsi})

model.py

class Corso(models.Model):
    titolo = models.CharField(max_length=100)
    progressivo= models.BooleanField(default=False)
    f1= models.BooleanField(default=False)
    f2= models.BooleanField(default=False)


class Iscrizione(models.Model):
    user = models.ForeignKey('auth.User')
    corso1= models.ForeignKey('Corso', blank=True, null=True, related_name="corso1")
    corso2= models.ForeignKey('Corso', blank=True, null=True, related_name="corso2")

1 个答案:

答案 0 :(得分:1)

您已在此处创建了一个对象:

iscrizione = form.save(commit=False)

您应该将IT保存到数据库中 - 使用

iscrizione.save()

而不是

form.save()

EDIT 那么,我认为这里也有问题:

tabella= Iscrizione.objects.filter(user=request.user)
iscrizione=get_object_or_404(Iscrizione, pk=tabella)

tabella - 是一个查询集(Iscrizione对象列表),我认为你不能得到一个pk(主键)等于查询集的对象。

修改

并尝试

        if fasca.progressivo:
            if fasca.f1:
                iscrizione.corso1 = fasca
            if fasca.f2:
                iscrizione.corso2 = fasca