Ich installierte das Modul Django Import/Export link die Installation lief reibungslos. Nun, wenn ich eine Datei mit der Erweiterung importieren möchten .xls es zeigt mir folgende Fehlermeldung:Django AttributeError 'float' Objekt hat kein Attribut 'Split'
Attribute bei/admin/xxxx/xxxx/process_import/ ‚float‘ hat kein Objekt Attribut ‚split‘
Ausnahme Ort: C: \ Python34 \ lib \ site-packages \ Import_Export \ widgets.py in sauberen, Linie 321
Wenn ich die Datei bearbeiten hier widgets.py Quellcode
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
})
hier sind die Linien 321 ids = filter(None, value.split(self.separator))
Django Modelle
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 Admin
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)
Hilf mir, dieses Problem zu lösen bitte ???
Vielen Dank für Ihre Antwort jetzt, wenn ich diese Zeile entfernen, erscheint ein weiterer Fehler Kann Werte für ein ManyToManyField, das ein intermediäres Modell angibt, nicht festlegen. Verwende stattdessen transport.Ligne_Arret's Manager. –
Der Code zu diesem Fehler fehlt in Ihrer Frage. Der Fehler tritt auf, weil Sie das Through-Argument in Ihrer ManyToMany-Beziehung verwenden. Dann können Sie 'add' nicht verwenden, um Beziehungen zu erstellen. Siehe die Dokumentation dazu: https://docs.djangoproject.com/es/1.9/topics/db/models/#extra-fields-on-many-to-many-relationships – ilse2005
Danke dir, ich lese diese Dokumentation aber wenn ich Importieren Sie eine Datei .xls Dieser Fehler wird angezeigt AttributError at/admin/xxxx/xxxx/process_import/Werte für ein ManyToManyField, das ein intermediäres Modell angibt, können nicht festgelegt werden. Verwende stattdessen transport.Ligne_Arret's Manager. Exception Location: \t C: \ Python34 \ lib \ site-packages \ django \ db \ models \ felder \ related_descriptors.py im Set, Zeile 882 .... –