2015-11-12 2 views
0

Может ли кто-нибудь сказать мне, как объединить два или более значения атрибутов в другом поле, используя экземпляр?Экземпляр Django - Объединить два значения атрибута в модели

Models.py:

fn_id = models.ForeignKey(FilemNumber, null=True, blank=True) 
    ln_id = models.ForeignKey(LineNumber, null=True, blank=True) 
    pn_id = models.ForeignKey(PhotoNumber, null=True, blank=True) 

    title = models.CharField(max_length=255,blank=True, null=True) 

Я хочу объединить fn_id, ln_id и pn_id и сохранить комбинацию из трех значений в заголовке поля.

+0

Почему именно вам это нужно? Вы считали, что просто используете свойство? – Ivan

+0

@IamMoon, почему бы вам не собрать три поля 'fn_id, ln_id, pn_id' в Model и получить OneToOneField. –

+0

@VuongHoang, как это сделать? Мне жаль, что я новичок в django и не знаю, как правильно это сделать. –

ответ

1

Вы можете сделать это:

from django import models 

class BaseModel(models.Model): 
    fn_id = models.ForeignKey(FilemNumber, null=True, blank=True) 
    ln_id = models.ForeignKey(LineNumber, null=True, blank=True) 
    pn_id = models.ForeignKey(PhotoNumber, null=True, blank=True) 


class YourModel(models.Model): 
    common = models.OneToOneField(BaseModel) 

    # I suppose that you want to get title, so let define title method 
    # if obj is an instance of YourModel, you can access title like this: 
    # obj.title 
    @property 
    def title(self): 
     return '{}{}{}{}'.format(self.id, self.common.fn_id, 
           self.common.ln_id, self.common.pn_id) 

Позволяет читать эту статью: https://docs.djangoproject.com/en/1.8/ref/models/fields/#onetoonefield

+0

Я хочу сохранить комбинацию значений ... например, fn_id 12345, ln_id LN8N и pn_id 5432, поэтому я хочу сохранить его в заголовке следующим образом: 12345LN8N5432 –

+0

Вы можете использовать вышеуказанные модели в следующем примере: 'common = BaseModel (fn_id = fn_obj, ln_id = ln_obj, pn_id = pn_obj) '' common.save() '' OBJ = YourModel (название = 'Вашего названия здесь', общее = общее) '' OBJ. save() ' –

+0

Затем мне нужно создать еще одну модель для названия? означает ли это, что значение будет сохранено в поле общего доступа, а не в поле заголовка? –

Смежные вопросы