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.