Django表格更新记录问题

2024-06-09 06:57:08 发布

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

当我尝试使用窗体更新Django中的记录时,出现了一个错误。我得到一个错误,这个号码的记录已经存在。下面是我的模型和视图。这真把我逼疯了。我想Django只是更新了记录,而不是试图写一个新的记录。你知道吗

class Report(models.Model):
    report_number = models.CharField(max_length=4, unique=True)
    detected = models.CharField(max_length=40)
    computer_name = models.CharField(max_length=40)
    username = models.CharField(max_length=15)
    cab_date_time = models.CharField(max_length=40)
    collector = models.CharField(max_length=40)
    addresses = models.TextField()
    fault = models.CharField(max_length=40)
    known_malware = models.TextField(default='No')
    collected_files = models.TextField(default='None')
    registry_keys = models.TextField()
    service_number = models.CharField(max_length=15, blank=True)
    notes = models.TextField(blank=True)
    sample_requested = models.CharField(max_length=4, blank=True)
    action = models.CharField(max_length=35, blank=True)

和视图

def reports(request, report_number):
    instance = get_object_or_404(Report, report_number=report_number)
    form = ReportForm(request.POST or None, instance=instance)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/')
    return render(request, 'reports/report.html', {'form': form})

这是形式定义

from django.forms import ModelForm
from reports.models import Report

class ReportForm(ModelForm):
    class Meta:
        model = Report
        exclude = ('moderator',)

Tags: reportformtruenumbermodelsrequest记录length
1条回答
网友
1楼 · 发布于 2024-06-09 06:57:08
def reports(request, report_number):
    instance = get_object_or_404(Report, report_number=report_number)
    if request.method == 'POST':
        form = ReportForm(request.POST, instance=instance)
        if form.is_valid():
            form.save(force_update=True)
            return HttpResponseRedirect('/')
    else:
        form = ReportForm(instance=instance)
    return render(request, 'reports/report.html', {'form': form})

相关问题 更多 >