【问题标题】:TypeError: __str__ returned non-string (type NoneType) - DjangoTypeError:__str__ 返回非字符串(NoneType 类型) - Django
【发布时间】:2021-06-30 17:15:26
【问题描述】:

我在尝试提出数据列表请求时出错:

我的模特:

import uuid
import time

from django.db import models
from a.models import ModelA
from b.models import ModelB


def upload_location(instance, filename):
    filebase, extension = filename.split('.')
    milliseconds = int(round(time.time() * 1000))

    return 'a_id__%s/%s__%s.%s' % (instance.a_id, instance.name, milliseconds, extension)


class Attachment(models.Model):
    id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
    name = models.CharField(max_length=150)
    file = models.FileField(upload_to=upload_location)

    a = models.ForeignKey(
        ModelA,
        null=True,
        blank=False,
        on_delete=models.CASCADE
    )
    b = models.ForeignKey(
        ModelB,
        null=True,
        blank=False,
        on_delete=models.CASCADE
    )

    def __str__(self):
        return self.name

错误:

我尝试了以下方法,但没有成功...

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

    def __str__(self):
        return self.name or ''

    def __str__(self):
        return self.get_full_name

当我尝试通过“Django-Admin”打开屏幕以附加新项目时发生此错误

【问题讨论】:

  • 你能分享你的表格吗?
  • @bdbd 我没有表单,我使用默认的 django-admin 和 backend-api... 在后端 api 中问题不会发生

标签: python django django-models django-rest-framework django-serializer


【解决方案1】:

冲突的序列化程序

当我使用两个不同的序列化器进行列表时遇到了同样的错误。

我只需要删除 serializer_class= Serializer_one

class SomeViewSet(viewsets.ViewSet):
    # serializer_class = Serializer_one
    def list(self, request):
        .....
        ........
        serializer = Serializer_two(some_queryset, many=True)
        return Response(serializer.data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多