当我更新模型的一个字段时,所有其他字段都会被删除

2024-06-25 05:43:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我更新f1,f2被删除,如果更新f2,f1被删除。。。 如何不断改变未更改的字段

对不起,我的英语糟透了

视图.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})

型号.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")

Tags: formidfalsetrueifmodelsrequestf2
1条回答
网友
1楼 · 发布于 2024-06-25 05:43:52

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

iscrizione = form.save(commit=False)

你应该把它保存到数据库里

iscrizione.save()

而不是

form.save()

编辑 好吧,我想这里也有问题:

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

tabella-是一个queryset(Iscrizione对象列表),我不认为您可以得到一个pk(主键)等于queryset的对象

编辑

试试看

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

相关问题 更多 >