我有这个错误无效的文字对于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)
答案 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')