Как фильтровать по полю db_column из ForeignKey, не проходя через чужой объект в Django - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть устаревшая база данных с соглашениями об именах, отличных от django.Если у меня есть следующие (урезанные) модели:

class Registration(models.Model):
    projectId=models.IntegerField(primary_key=True)

class Application(models.Model):
    applicationId=models.IntegerField(primary_key=True)
    registration=models.ForeignKey(Registration,db_column='projectId')

Экземпляр ForeignKey вызывает создание свойства в Application с именем registration_id, но это неправильное имя для поля(У меня есть способ исправить это), и он не может быть использован в QuerySet.

. Есть ли какой-либо способ использования поля id, предоставленного ForeignKey в модели приложения, вместоссылаться на него через регистрацию?

То есть.Я пишу много кода, как:

Application.objects.get(projectId=1234)

И не хочу записывать это как:

Application.objects.get(registration__projectId=1234)

или даже

Application.objects.get(registration__pk=1234)

Я немного удивлен, что:

Application.objects.get(registration_id=1234)

не работает ...

Также обратите внимание, я попытался определить столбец id как поле, а также внешний ключ, который работал для набора запросов, но вставляет жалобу при попытке вставить в один и тот же столбец дважды:

class Application(models.Model):
    ...
    projectId=models.IntegerField()
    ...

Ответы [ 2 ]

0 голосов
/ 25 февраля 2011

Вы пробовали это?

Application.objects.get(registration=1234)
0 голосов
/ 25 февраля 2011

Я думаю, что просто Application.objects.registration.get(projectId=1234) должен делать то, что вы хотите.

...