我有一个Field的子类:
class MyIDField(Field):
...
def to_python(self, value):
return to_base_36(value)
我将它用作这样的主键:
class Foo(m.Model):
id = MyIDField(primary_key=True)
class Bar(m.Model):
foo = m.ForeignKey(Foo)
然后在我访问MyIDField.to_python
时调用Bar.foo_id
函数:
>>> b = Bar.objects.all()[0] >>> b.foo_id 1234 >>> b.foo.id 'ya' >>>
由于一些原因,这很烦人,但最重要的是因为它打破了管理员中的下拉菜单 - 他们没有选择正确的值(菜单项 已经to_python
'd ,但默认值为不为to_python
'd)。
这是我做错了吗?或者这是Django的问题?