2017-08-17 26 views
0

我有这个错误无效字面值为int()与基数10:'a'在Django管理员?导致它的代码如下。有人知道这是什么问题吗?基数为10的int()错误无效字符:Django admin中的'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

安置自己的'MyFile'模型源请。 – Selcuk

回答

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实际上是一个文件字段,您应该可以通过名称查询它。如果它看起来像另一个相关对象,则可以使用双下划线来访问任何file所在的字段,以执行“嵌套查询”。所以,如果filename场,你可以这样做:

MyFile.objects.filter(file__name='a') 
相关问题