2014-12-30 3 views
0

У меня есть записи в базе данных в моей базе данных, и я хочу удалить первые 3 символа из их имени.Убрать первые 3 персонажа из поля в базе данных

class Doctor(models.Model): 
    name = models.CharField(max_length=1300) 
    specialization = models.ForeignKey(Specialization) 

    def __unicode__(self): 
     return u"%s %s" % (self.name, self.specialization) 

    def get_absolute_url(self): 
     from django.core.urlresolvers import reverse 
     return reverse('k.views.showDocProfile', args=[str(self.id)]) 

У меня довольно много таких удалений, поэтому вручную не идеальны.

+0

self.name [3:] может выполнить вашу работу, если self.name является объектом типа строки. – ZdaR

+0

Это одноразовая операция, или вы хотите ** всегда ** удалить первые три буквы? Это временная операция (например, просто свойство, которое удаляет первые три символа) или постоянное (т. Е. Фактически удаляет из БД раз и навсегда)? – J0HN

+0

Я хочу одноразовую операцию, удалить те из БД, раз и навсегда –

ответ

1

один раз изменить все дб:

for doctor in Doctor.objects.all(): 
    doctor.name = doctor.name[3:] 
    doctor.save() 

Если вам просто нужно, чтобы скрыть имя только для некоторых случаев использования вы можете использовать поле свойства в модели

class Doctor(Model): 
    name = CharField(...) 

    @property 
    def masked_name(self): 
     return self.name[3:] 

    # To access to property you just use doctor.masked_name on an instance of the Doctor class (it's a property, you don't have to call doctor.masked_name()) 
Смежные вопросы