Django: Field.to_python не вызывается для идентификаторов внешних ключей? - PullRequest
1 голос
/ 21 октября 2010

У меня есть подкласс 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).

Это я что-то не так делаю? Или это проблема с Джанго?

...