user1050619
user1050619

Reputation: 20856

Modelmanager not overriding save method

Here is my model and modelmanager. I basically want to override the save method, so I can perform some operations before saving the Companymanager.

I have defined a modelmanager but its save method is not being called when I try to save the company object.

class CompanyManager(models.Manager):
    """
    Custom model manager to return a random scenario
    """
    def save(self, *args, **kwargs):
        #User.objects.create()
        #print '*args == ', *args
        #print '*kwargs == ', *kwargs
        #User.objects.filter()
        for each in args:
            print 'each=',each



class Company(models.Model):

    objects =CompanyManager()

    COMPANY_SIZE = (
    ('1-10', '1-10'),
    ('11-50', '11-50'),
    ('51-200', '51-200'),
    ('201-500', '200-500'),
    ('501-1000', '501-1000'),
    ('1001-5000', '1001-5000'),
    ('5001-10000', '5001-10000'),
    ('10000+', '10000+'),
    )   

    INDUSTRY = (
        ('Telecom','Telecom'),
        ('Technology','Technology')
        )

    users = models.ManyToManyField(User)
    description = models.CharField(max_length=500,default='')
    size = models.CharField(max_length=10,choices=COMPANY_SIZE,default='1-10')
    industry = models.CharField(max_length=100,choices=INDUSTRY,default='---')
    url = models.URLField(max_length=200,default='')
    logo = models.ImageField(upload_to='company',default='')
    addr1 = models.CharField(max_length=200,default='')
    addr2 = models.CharField(max_length=200,default='')
    city = models.CharField(max_length=200,default='')
    state = models.CharField(max_length=2,choices=STATE_CHOICES,default='')
    zip_cd = models.CharField(max_length=5,default='')
    phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
    phone_number_1 = models.CharField(validators=[phone_regex], blank=True,max_length=15)
    phone_number_2 = models.CharField(validators=[phone_regex], blank=True,max_length=15)


    def __str__(self):
        return self.name

Upvotes: 0

Views: 882

Answers (2)

Hiren
Hiren

Reputation: 270

let sharedintance = modelmanagar()

class modelmanagar: NSObject {

var database : FMDatabase? = nil

class func getinstance() -> modelmanagar
{
    if(sharedintance.database == nil)
    {

        let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

        let fileURL = documentURL.appendingPathComponent("dddddbbbbbb.sqlite" as String)

        sharedintance.database = FMDatabase(path:fileURL.path)
    }

    return sharedintance
}

Upvotes: -1

knbk
knbk

Reputation: 53659

save() is a model instance method, not a manager method. You need to move it to your model:

class Company(models.Model):
    def save(self, *args, **kwargs):
        #User.objects.create()
        #print '*args == ', *args
        #print '*kwargs == ', *kwargs
        #User.objects.filter()
        for each in args:
            print 'each=',each

    ...

Upvotes: 5

Related Questions