错误无效的文​​字对于int()与基数10:Django管理员中的'a'?

时间:2017-08-17 01:11:11

标签: python django django-models django-admin

我有这个错误无效的文​​字对于int()与基数10:Django管理员中的'a'?导致它的代码如下。有人知道这是什么问题吗?

def formfield_for_manytomany(self, db_field, request, **kwargs):
    if db_field.name == "filenames":
        kwargs["queryset"] = MyFile.objects.filter(file='a')
    return super().formfield_for_manytomany(db_field, request, **kwargs)

2 个答案:

答案 0 :(得分:1)

文件字段不是文本字段或字段字段,因此您无法像使用文字一样查询文件字段。您需要根据文件名进行过滤,然后查询过滤器才能生效。

答案 1 :(得分:0)

当您尝试使用不是整数的内容查询主键字段时,通常会出现您正常看到的错误。 Django尝试将其转换为int并且它失败并引发通常调用int('a')时会看到的相同错误。

In [1]: int('a')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-1-b3c3f4515dd4> in <module>()
----> 1 int('a')

ValueError: invalid literal for int() with base 10: 'a'

如果file实际上是一个文件字段,您应该能够按名称查询它。如果它看起来是另一个相关对象,则可以执行&#34;嵌套查询&#34;通过使用双下划线访问任何file的字段。因此,如果file有一个name字段,您可以这样做:

MyFile.objects.filter(file__name='a')