如何使用Django表单或ModelForm更新数据库表记录子集中的单个列?

时间:2013-11-26 11:07:43

标签: python mysql django

我有一个django应用程序核心。它有一个模型验证,存储8列的记录。我用一个空列获取数据库记录中的每一行。我想稍后使用django表单或模型表单为记录子集更新此空列。我不想更改任何其他列值。

例如,我有100个记录,其中一个空列让我们说“产品详细信息”。我想更新最后10行的产品详细信息列。使用Django表单或modelForm。

以下是我的应用程序的models.py,forms.py和views.py代码:

models.py

class Verification(models.Model):
asset_code = models.CharField(verbose_name="Asset Code",max_length=16, default="")
scan_time=models.DateTimeField(verbose_name="Time of smartDNA scan",auto_now_add=True,default=datetime.datetime.now)
credential = models.CharField(verbose_name="smartDNA Credential",max_length=16, default="")
status=models.IntegerField(verbose_name="Scanning Status",choices=STATUS_CHOICES,default=1)
operator = models.CharField(verbose_name="Operator",max_length=16, default="")
location = models.CharField(verbose_name="Branch",max_length=64, default="")
auth_code = models.CharField(verbose_name="Scanner Authentication",max_length=20, default="DSC(Verisign")
emp_id = models.CharField(verbose_name="EMP ID",max_length=16, default="")
image = models.CharField(verbose_name="Image",max_length=24, default="dd")
created=models.DateTimeField(verbose_name="Created on",blank=True,auto_now_add=True)
modified=models.DateTimeField(verbose_name="Modified on",blank=True,auto_now=True)
product_details= models.CharField(verbose_name="Product Details",max_length=64, default="")

forms.py

class UpdateDetailsForm(forms.Form):
    asset_code = forms.CharField(max_length=16)
    asset_code = forms.CharField(max_length=16)
    product_details = forms.CharField(max_length=64)

views.py

def update_details(request):
   if request.method == "POST":
    if 'search' in request.POST:
            form = UpdateDetailsForm(request.POST)
            if form.is_valid:
               product_details=form.cleaned['product_details']
   return render_to_response('update_details.html',
                {'form':UpdateDetailsForm(),},
                context_instance=RequestContext(request))

我想使用表格为表格行的子集更新一列'product_details'。例如,从asset_code 10到asset_code 100。

1 个答案:

答案 0 :(得分:0)

您需要使用update queryset方法。

例如:

verifications = Verification.objects.filter(asset_code__range=(10, 100))
verifications.update(product_details=form.cleaned['product_details'])