Python Django всегда передает id 1 на ForeignKey с помощью to_field

Я новичок в Django и пытаюсь создать небольшое приложение, которое показывает данные сканирования виртуальных машин, вставленные в таблицу HostsFixDataScans.

Для доступа к отсканированным данным в HostsFixDataScans через модель Hosts, я определил ForeignKey с полем to_field.

Но, к сожалению, данные, возвращаемые связанными HostsFixDataScans, неверны.

Я проверил SQL-запросы и при запросе таблицы HostsFixDataScans используется не id хоста, а всегда 1.

Мое определение domain = models.ForeignKey(Domains, on_delete=models.CASCADE), которое не использует to_field, работает правильно.

Я почти уверен, что неправильно понимаю определение этих отношений.

Может быть, вы могли бы подсказать мне, как решить эту проблему? Большое спасибо заранее!

Вот сокращенные определения моделей:

class Os(models.Model):
    operatingsystem = models.CharField(max_length=32)
    lsbdistcodename = models.CharField(max_length=32)
    lsbdistrelease = models.CharField(max_length=32, db_collation='ascii_bin')
    lsbmajdistrelease = models.IntegerField()
    remarks = models.CharField(max_length=256, blank=True, null=True)

class HostsFixDataScans(models.Model):
    host_id = models.PositiveIntegerField(primary_key=True, unique=True)
    scan_id = models.PositiveIntegerField()
    os = models.ForeignKey(Os, on_delete=models.CASCADE)

class Hosts(models.Model):
    hostname = models.CharField(max_length=256)
    domain = models.ForeignKey(Domains, on_delete=models.CASCADE)
    is_virtual = models.PositiveIntegerField(blank=True, null=True)
    os = models.ForeignKey(HostsFixDataScans, to_field='host_id', on_delete=models.CASCADE)

Простите, друзья,

Я совершил действительно глупую ошибку, соединив поле os_id с полем host_id в другой таблице.

Теперь я добавил поле last_fix_data_scan_id в таблицу Hosts, которое теперь должно заполняться при каждом сканировании машины. Но сделав это таким образом, я теперь могу запрашивать Hosts, соединив это новое поле с scan_id в HostsFixDataScans.

Вернуться на верх