Django TypeError:\uu str_uu返回非字符串(型号名称)

2024-10-01 15:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的模型.py在

class ScanTarget(models.Model):
    scan_target = models.CharField(primary_key=True, max_length=60)
    scan_count = models.IntegerField(default=1)
    last_scan = models.DateTimeField(default=timezone.now, blank=True, null=True)
    created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return str(self.scan_target)
class RawScanResults(models.Model):
    scan_target = models.ForeignKey(ScanTarget, on_delete=models.CASCADE,
                         related_name='raw_results')
    result_uid = models.UUIDField()
    start = models.DateTimeField(default=timezone.now, db_index=True)
    finish = models.DateTimeField(null= True, blank=True, db_index=True)
    score = models.TextField(max_length=5, blank=True, null=True)

    def __str__(self):
        return str('test')

当我想用一个外键实例化一个新的RawScanResults到my视图.py如下:

^{pr2}$

我一直遇到这样的错误:TypeError: __str__ returned non-string (type ScanTarget)我尝试过修改这两个类的def __str__或者注释掉它们,但是它总是给我同样的错误。我有什么不对吗?在

更新: 这是我在manage.py shell中遵循的内容:

In [119]: a=ScanTarget(scan_target='yahoo.com')

In [120]: uid
Out[120]: '1a5b2732-69f0-457a-8ec0-c6232662577e'

In [121]: a.save()

In [122]: b = RawScanResults(scan_target=a, result_uid=uid)

In [123]: b
Out[123]: ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~/.virtualenvs/djangodev/lib/python3.5/site-packages/IPython/core/formatters.py in __call__(self, obj)
    700                 type_pprinters=self.type_printers,
    701                 deferred_pprinters=self.deferred_printers)
--> 702             printer.pretty(obj)
    703             printer.flush()
    704             return stream.getvalue()

~/.virtualenvs/djangodev/lib/python3.5/site-packages/IPython/lib/pretty.py in pretty(self, obj)
    393                             if callable(meth):
    394                                 return meth(obj, self, cycle)
--> 395             return _default_pprint(obj, self, cycle)
    396         finally:
    397             self.end_group()

~/.virtualenvs/djangodev/lib/python3.5/site-packages/IPython/lib/pretty.py in _default_pprint(obj, p, cycle)
    508     if _safe_getattr(klass, '__repr__', None) is not object.__repr__:
    509         # A user-provided repr. Find newlines and replace them with p.break_()
--> 510         _repr_pprint(obj, p, cycle)
    511         return
    512     p.begin_group(1, '<')

~/.virtualenvs/djangodev/lib/python3.5/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
    699     """A pprint that just redirects to the normal repr function."""
    700     # Find newlines and replace them with p.break_()
--> 701     output = repr(obj)
    702     for idx,output_line in enumerate(output.splitlines()):
    703         if idx:

~/.virtualenvs/djangodev/lib/python3.5/site-packages/django/db/models/base.py in __repr__(self)
    511 
    512     def __repr__(self):
--> 513         return '<%s: %s>' % (self.__class__.__name__, self)
    514 
    515     def __str__(self):

TypeError: __str__ returned non-string (type ScanTarget)

Tags: inpyselftrueobjdefaulttargetscan
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:41

我删除了所有的数据库表,并发出了python manage.py makemigrations和{},我的问题得到了修复。在

我不知道到底是什么引起了这个问题。在

相关问题 更多 >

    热门问题