Django ищет идентификатор с определенным полем первичного ключа

#django #database #models

#django #База данных #Модели

Вопрос:

Я использую Django версии 1.10.1, и мне приходится использовать внешнюю базу данных с разрешением только для чтения. Я сгенерировал свои модели с помощью команд inspectdb. Все работает хорошо, пока я не изменил одно поле на внешний ключ, потому что я должен включить отношения, которые inspectdb не обнаруживает. У меня есть первичный ключ, определенный в обеих таблицах, но когда я определяю внешний ключ, django ищет поле идентификатора в ссылке, которого нет в базе данных.

Это ошибка, которую я получил: (1054, "Unknown column 'vicidial_callbacks.lead_id_id' in 'field list'")

И вот мои модели:

 class VicidialList(models.Model):
   _DATABASE = "dialer"
   lead_id = models.AutoField(primary_key=True)
   entry_date = models.DateTimeField(blank=True, null=True)
   modify_date = models.DateTimeField()
   status = models.CharField(max_length=50, blank=True, null=True)
   user = models.CharField(max_length=20, blank=True, null=True)
   vendor_lead_code = models.CharField(max_length=20, blank=True, null=True)
   source_id = models.CharField(max_length=50, blank=True, null=True)
   list_id = models.BigIntegerField()

   class Meta:
       managed = False
       db_table = 'vicidial_list'

class VicidialCallbacks(models.Model):
   _DATABASE = "dialer"
   callback_id = models.AutoField(primary_key=True)
   lead_id = models.ForeignKey(VicidialList, related_name='lead',to_field='lead_id')
   list_id = models.BigIntegerField(blank=True, null=True)
   campaign_id = models.CharField(max_length=8, blank=True, null=True)
   status = models.CharField(max_length=10, blank=True, null=True)

   class Meta:
       managed = False
       db_table = 'vicidial_callbacks'
 

Итак, почему Django ищет столбец id? Документы говорят, что Django хочет добавить свое собственное поле идентификатора, пока мы не определим primary_key…

Комментарии:

1. Не могли бы вы указать вызов, который выдает ошибку? Я думаю, я знаю, в чем ваша проблема…

2. @Remi Уверен, что ‘queryset = VicidialCallbacks.objects.using(‘дозвонщик’).select_related()’

3. Столкнувшись с той же проблемой, если вы нашли какое-то решение, пожалуйста, ответьте.