简体   繁体   中英

How to update a single column in a subset of database table records using Django form or ModelForm?

I have a django application core. It have a model verification which stores records with 8 columns. I get each row in database records with one null column. I want to update this null column for a subset of records using django form or model form later. I don't want to change any other column values.

For example I have total 100 records with one null column let say it "Product Details". I want to update product details column for last 10 rows. Using Django form or modelForm.

Here is the models.py,forms.py and views.py code of my application:

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

I want to update one column 'product_details' using form for a subset of table rows. For example from asset_code 10 to asset_code 100.

You need to use the update queryset method.

For example:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM