Seite 1 von 1

Django - Import Export __str__ returned non-string (type NoneType)

Verfasst: Samstag 8. Februar 2020, 13:11
von Pyjama93
Ich arbeite an einem Django Projekt und habe das Django Import Export Modul integriert um Excel Dateien hochzuladen.

Das Django Model bei dem der Import funktioniert sieht so aus:

Code: Alles auswählen

class A(models.Model):
    model_name  = models.CharField(null=True, blank=True, max_length=20,default='WebGL_Model')
    model_file  = models.FileField(null=True, blank=True, upload_to=upload_image_path)
    model_date  = models.DateTimeField(null=True, blank=True, auto_now_add=True)
Und der dazugehörige admin view, so:

Code: Alles auswählen

@admin.register(A)
class AModelAdmin(ImportExportModelAdmin):
    list_display        = ["model_name", "model_date"]
    list_filter         = ["model_name", "model_date"]
    search_fields       = ["model_name", "model_date"]
    list_editable       = ["model_name"]
    list_display_links  = ["model_date"]
    class Meta:
        model = A
class AResource(resources.ModelResource):
    class Meta:
        model = A
        exclude = ('model_date', )
        

Eines der Django Model bei dem der Upload nicht funktioniert, sieht so aus:

Code: Alles auswählen

class Project(models.Model):
    slug            = models.SlugField(null=True, blank=True, unique=True,default="0")
    project_title   = models.CharField(null=True, blank=True, max_length=120)
    project_post    = models.TextField(null=True, blank=True)
    project_cat     = models.CharField(null=True, blank=True,max_length=20)
    project_thumb   = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
    project_movie   = models.FileField(upload_to=upload_image_path, null=True, blank=True,default='False')
    project_views   = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True,related_name='project_views',default=0)
    project_likes   = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True,related_name='project_likes',default=0)
    project_date    = models.DateTimeField(null=True, blank=True, auto_now_add=True)
Und der Admin:

Code: Alles auswählen

@admin.register(Project)
class ProjectModelAdmin(ImportExportModelAdmin):
    list_display        = ["project_title", "project_date"]
    list_filter         = ["project_title", "project_date"]
    search_fields       = ["project_title", "project_date"]
    list_editable       = ["project_title"]
    list_display_links  = ["project_date"]
    class Meta:
        model = Project

class ProjectResource(resources.ModelResource):
    class Meta:
        model = Project
        exclude = ('project_date',)
Ich habe versucht alle, alle bis auf die M2M und nur das erste Feld hochzuladen, aber er meldet immer:

Code: Alles auswählen

Line number: 1 - __str__ returned non-string (type NoneType)
None, None, a, a, a, None, None, None, None

Traceback (most recent call last):
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\resources.py", line 505, in import_row
diff = self.get_diff_class()(self, original, new)
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\resources.py", line 167, in __init__
self.left = self._export_resource_fields(resource, instance)
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\resources.py", line 188, in _export_resource_fields
return [resource.export_field(f, instance) if instance else "" for f in resource.get_user_visible_fields()]
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\resources.py", line 188, in <listcomp>
return [resource.export_field(f, instance) if instance else "" for f in resource.get_user_visible_fields()]
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\resources.py", line 678, in export_field
return field.export(obj)
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\fields.py", line 122, in export
value = self.get_value(obj)
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\import_export\fields.py", line 87, in get_value
value = getattr(value, attr, None)
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\django\db\models\fields\related_descriptors.py", line 535, in __get__
return self.related_manager_cls(instance)
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\django\db\models\fields\related_descriptors.py", line 846, in __init__
raise ValueError('"%r" needs to have a value for field "%s" before '
File "C:\Users\Pyjama\Desktop\DEV\virtualenvs\ab_vb_py_3.8\lib\site-packages\django\db\models\base.py", line 518, in __repr__
return '<%s: %s>' % (self.__class__.__name__, self)
TypeError: __str__ returned non-string (type NoneType)
Hier die beiden Excel Dateien:

https://1drv.ms/x/s!ArbtyrOBEijOgSIKK23 ... o?e=4bALig
https://1drv.ms/x/s!ArbtyrOBEijOgRq205p ... X?e=NTa1tX

Vielen Dank