2017-08-17 25 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') 
相關問題