2014-11-13 2 views
0

Я создал новое поле, унаследованный от OneToOneField ::Как создать настраиваемое поле соответствующей модели?

class MeasureField(models.OneToOneField): 
    """ A custom Django model Field for Measure """ 

    __metaclass__ = models.SubfieldBase 

    description = _("Measurement") 

    def __init__(self, *args, **kwargs): 
     self.measure_types = args 
     args = (Measure,) 
     if 'to' in kwargs.keys(): 
      args = tuple() 
     super(MeasureField, self).__init__(*args, **kwargs) 

    def deconstruct(self): 
     name, path, args, kwargs = super(MeasureField, self).deconstruct() 
     args = self.measure_types 
     return name, path, args, kwargs 

Он просто принимает список аргументов (аргументы) и всегда связана с моделью Measure. Но когда я пытаюсь поставить его на модели и создать:

basic_condition = MeasureField(
    'Density', 
    related_name="basic_condition_of_product", 
) 

У меня есть следующее сообщение об ошибке:

AttributeError: 'Product' object has no attribute 'basic_condition_id' 

Я знаю, что родственное поле добавить атрибут с _id приложенным для базы данных. Но я не знаю, почему мое пользовательское поле этого не делает.

Как я могу его создать?

ответ

0

На самом деле я не должен был добавлять метакласс SubfieldBase. Он отлично работает без него.

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