use*_*619 0 django django-models
这是我的模型和模型经理。我基本上想覆盖save方法,因此我可以在保存Companymanager之前执行一些操作。
我已经定义了一个模型管理器,但是当我尝试保存公司对象时没有调用它的保存方法。
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
Run Code Online (Sandbox Code Playgroud)
save()是模型实例方法,而不是管理器方法。您需要将其移动到模型中:
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
...
Run Code Online (Sandbox Code Playgroud)