Search code examples
mysqlweb2py

Deleting record from database based on an action in a page


I am making an application for a car dealership. I have a page for stocks and a page for sales. Whenever I make a new entry in sales, I want the corresponding entry to be deleted from the stocks page.

My db for sales is

db.define_table('sales',
                Field('customer_name','string'),
                Field('village','string'),
                Field('mobile_number','integer'),
                Field('model','string',required=True,requires=IS_IN_SET(['1035DI','241DI','241DI(P.S.)','245DI','245DI(P.S.)','9000DI','9000DI(P.S)','5245DI','9500DI'])),
                Field('engine_number','string'),
                Field('chassis_number','string'),
                Field('date_of_sale','date'),
                Field('sale_price','integer'),
                Field('bill_number','integer'),
                Field('mode_of_payment','string',requires=IS_IN_SET(['Cash','Cheque']))
                )

My db for stock is

db.define_table('stock',
                Field('model','string',required=True,requires=IS_IN_SET(['1035DI','241DI','241DI(P.S.)','245DI','245DI(P.S.)','9000DI','9000DI(P.S)','5245DI','9500DI'])),
                Field('engine_number','string',required=True),
                Field('chassis_number','string',required=True),
                Field('invoice_number','integer',required=True),
                )

Engine number and chassis number is unique for each entry.


Solution

  • You didn't post any controller code, so I'm just making a simple untested example. I'm assuming you're using SQLFORM, and your sales controller function is just named "sales"

    #controller, i.e. default.py
    def sales():
         form = SQLFORM(db.sales)
         if form.process().accepted:
              engine_number = form.vars.engine_number
              chassis_number = form.vars.chassis_number
              db((db.stock.engine_number == engine_number) & (db.stock.chassis_number == chassis_number)).delete()
         return dict(form=form)