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

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pyjama93
User
Beiträge: 3
Registriert: Donnerstag 6. Februar 2020, 17:31

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
Antworten