Пример #1
0
    def init(self, model):

        self.init_field_from_name(model)
        if self.dbfield is not None:
            from django.db.models.fields import IntegerField, DecimalField, BooleanField, TextField, DateField, TimeField, DateTimeField
            from django.db.models.fields.related import ForeignKey
            if isinstance(self.dbfield, IntegerField):
                self.manage_integer_or_choices(self.dbfield)
            elif isinstance(self.dbfield, DecimalField):
                self.field_type = TYPE_FLOAT
                min_value, max_value = get_range_value(self.dbfield)
                self.field_list = [(six.text_type(min_value), six.text_type(
                    max_value), six.text_type(self.dbfield.decimal_places))]
            elif isinstance(self.dbfield, BooleanField):
                self.field_type = TYPE_BOOL
            elif isinstance(self.dbfield, TextField):
                self.field_type = TYPE_STR
            elif isinstance(self.dbfield, DateField):
                self.field_type = TYPE_DATE
            elif isinstance(self.dbfield, TimeField):
                self.field_type = TYPE_TIME
            elif isinstance(self.dbfield, DateTimeField):
                self.field_type = TYPE_DATETIME
            elif isinstance(self.dbfield, ForeignKey):
                return self._init_for_list(self.dbfield.remote_field.model, False)
            elif isinstance(self.dbfield, ManyToManyField):
                return self._init_for_list(self.dbfield.remote_field.model, True)
            elif 'RelatedManager' in self.dbfield.__class__.__name__:
                return self._init_for_list(self.dbfield.model, False)
            else:
                self.field_type = TYPE_STR
            return True
        else:
            return False
Пример #2
0
    def init(self, model):

        self.init_field_from_name(model)
        if self.dbfield is not None:
            from django.db.models.fields import IntegerField, DecimalField, BooleanField, TextField, DateField, TimeField, DateTimeField
            from django.db.models.fields.related import ForeignKey
            if isinstance(self.dbfield, IntegerField):
                self.manage_integer_or_choices(self.dbfield)
            elif isinstance(self.dbfield, DecimalField):
                self.field_type = TYPE_FLOAT
                min_value, max_value = get_range_value(self.dbfield)
                self.field_list = [(six.text_type(min_value), six.text_type(max_value), six.text_type(self.dbfield.decimal_places))]
            elif isinstance(self.dbfield, BooleanField):
                self.field_type = TYPE_BOOL
            elif isinstance(self.dbfield, TextField):
                self.field_type = TYPE_STR
            elif isinstance(self.dbfield, DateField):
                self.field_type = TYPE_DATE
            elif isinstance(self.dbfield, TimeField):
                self.field_type = TYPE_TIME
            elif isinstance(self.dbfield, DateTimeField):
                self.field_type = TYPE_DATETIME
            elif isinstance(self.dbfield, ForeignKey):
                return self._init_for_list(self.dbfield.remote_field.model, False)
            elif isinstance(self.dbfield, ManyToManyField):
                return self._init_for_list(self.dbfield.remote_field.model, True)
            elif 'RelatedManager' in self.dbfield.__class__.__name__:
                return self._init_for_list(self.dbfield.model, False)
            else:
                self.field_type = TYPE_STR
            return True
        else:
            return False
Пример #3
0
 def manage_integer_or_choices(self, dbfield):
     if (dbfield.choices is not None) and (len(dbfield.choices) > 0):
         self.field_type = TYPE_LIST
         self.field_list = []
         for choice_id, choice_val in dbfield.choices:
             self.field_list.append(
                 (six.text_type(choice_id), six.text_type(choice_val)))
     else:
         self.field_type = TYPE_FLOAT
         min_value, max_value = get_range_value(dbfield)
         self.field_list = [(six.text_type(min_value),
                             six.text_type(max_value), '0')]
Пример #4
0
 def manage_integer_or_choices(self, dbfield):
     if (dbfield.choices is not None) and (len(dbfield.choices) > 0):
         self.field_type = TYPE_LIST
         self.field_list = []
         for choice_id, choice_val in dbfield.choices:
             self.field_list.append(
                 (six.text_type(choice_id), six.text_type(choice_val)))
     else:
         self.field_type = TYPE_FLOAT
         min_value, max_value = get_range_value(dbfield)
         self.field_list = [
             (six.text_type(min_value), six.text_type(max_value), '0')]