2016-04-05 2 views
0

Я установил модуль Django Import/Export link установка прошла гладко. Теперь, когда я хочу, чтобы импортировать файл с расширением .xls он показывает мне следующее сообщение об ошибке:Django AttributeError 'float' объект не имеет атрибута 'split'

AttributeError в/админ/хххх/хххх/process_import/ «поплавок» не имеет атрибута объекта «раскол»

Исключение Расположение: C: \ Python34 \ Lib \ сайт-пакеты \ Import_Export \ widgets.py в чистых, линиях 321

Когда я отредактировать файл здесь widgets.py исходного кода

def clean(self, value): 
     if not value: 
      return self.model.objects.none() 
     if isinstance(value, float): 
      ids = [int(value)] 
     else: 
      ids = value.split(self.separator) 
     ids = filter(None, value.split(self.separator)) 
     return self.model.objects.filter(**{ 
      '%s__in' % self.field: ids 
     }) 

Вот строки 321 ids = filter(None, value.split(self.separator))

модели Django

class Vehicule(models.Model): 
    matricule = models.CharField(max_length=200) 
    modele = models.CharField(max_length=200) 
    annee = models.IntegerField() 

    def __str__(self): 
     return self.matricule 

class Ligne(models.Model): 
    nom = models.CharField(max_length=200) 
    vehicule = models.ManyToManyField(Vehicule, through='Affecter_Vehicule_Ligne') 

    def __str__(self): 
     return str(self.nom) 

class Affecter_Vehicule_Ligne(models.Model): 
    vehicule = models.ForeignKey(Vehicule, on_delete=models.CASCADE) 
    ligne = models.ForeignKey(Ligne, on_delete=models.CASCADE) 
    actif = models.BooleanField(default=False) 
    dateAffectation = models.DateTimeField(null=True) 

    def __str__(self): 
     return str(self.dateAffectation) 


class Arret(models.Model): 
    nom = models.CharField(max_length=200, null=True) 
    latitude = models.CharField(max_length=200, null=True) 
    longitude = models.CharField(max_length=200, null=True) 
    lignes = models.ManyToManyField(Ligne, through='Ligne_Arret') 

    def __str__(self): 
     return str(self.nom) 

class Ligne_Arret(models.Model): 
    sens = models.CharField(max_length=200) 
    section = models.BooleanField(default=False) 
    ligne = models.ForeignKey(Ligne, on_delete=models.CASCADE) 
    arret = models.ForeignKey(Arret, on_delete=models.CASCADE) 

    def __str__(self): 
     return str(self.arret) 

Django администратора

class VehiculeAdmin(admin.ModelAdmin): 
    list_display = ('matricule', 'modele', 'annee') 
    search_fields = ('matricule', 'modele') 

class Affecter_Vehicule_LigneAdmin(admin.ModelAdmin): 
    list_display = ('vehicule', 'dateAffectation', 'ligne') 

class ArretAdmin(ImportExportModelAdmin): 
    pass 

class Ligne_ArretAdmin(admin.ModelAdmin): 
    list_display = ('ligne', 'arret', 'section', 'sens') 

admin.site.register(Vehicule, VehiculeAdmin) 
admin.site.register(Ligne) 
admin.site.register(Affecter_Vehicule_Ligne, Affecter_Vehicule_LigneAdmin) 
admin.site.register(Arret, ArretAdmin) 
admin.site.register(Ligne_Arret, Ligne_ArretAdmin) 

Помогите мне пожалуйста решить эту проблему ???

ответ

0

Вы пытаетесь разделить значение с плавающей точкой в ​​этой строке ids = filter(None, value.split(self.separator))

Я думаю, вы можете просто удалить эту строку. Когда вы обрабатываете корпус None и разделяете его раньше.

+0

Спасибо за ваш ответ сейчас, когда я удаляю эту строку. Появляется еще одна ошибка. Невозможно установить значения на ManyToManyField, который указывает промежуточную модель. Вместо этого используйте transports.Ligne_Arret. –

+0

Код об ошибке в вашем вопросе отсутствует. Ошибка возникает из-за использования аргумента 'through' в вашем отношении ManyToMany. Тогда вы не можете использовать 'add' для создания отношений. См. Документы об этом: https://docs.djangoproject.com/es/1.9/topics/db/models/#extra-fields-on-many-to-many-relationships – ilse2005

+0

Спасибо, что я прочитал эту документацию, но когда я импортировать файл .xls появляется эта ошибка AttributeError at/admin/xxxx/xxxx/process_import/Невозможно установить значения на ManyToManyField, который задает промежуточную модель. Вместо этого используйте transports.Ligne_Arret. Исключение Место: \t C: \ Python34 \ lib \ site-packages \ django \ db \ models \ fields \ related_descriptors.py в наборе, строка 882 .... –

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