Django表示更新记录问题

时间:2014-06-27 00:42:58

标签: python django

当我尝试使用表单更新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})

这是Form defination

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

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

1 个答案:

答案 0 :(得分:0)

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