Значения внешнего ключа модели Django не отображаются

#django #django-forms

Вопрос:

Я новичок в Django, и я пытаюсь создать форму, используя форму модели. Форма имеет значение внешнего ключа (connection_type ниже в forms.py) и он не отображает значения, на которые ссылается.

Для изображения ниже столбцы,

Имя подключения: отображается

Тип подключения: текстовое поле не появилось

Конечная точка: отображается

Изображение из браузера

forms.py

 class ConnectionForm(forms.ModelForm):  connection_type = forms.ModelChoiceField(queryset=ConnectionTypes.objects.all(), to_field_name='connection_type_id')  class Meta:  model = ConnectionDetails  exclude = ['connection_id','last_update_date']  

Models.py

 class ConnectionDetails(models.Model):  connection_id = models.IntegerField(primary_key=True,default=re_sequence('connection_seq'))  connection_name = models.CharField(max_length=200)  connection_type = models.IntegerField()   endpoint = models.CharField(max_length=100)  port = models.IntegerField()  login_id = models.CharField(max_length=100)  login_password = fields.CharPGPPublicKeyField(max_length=100)  connection_string_1 = fields.CharPGPPublicKeyField(max_length=100)  connection_string_2 = fields.CharPGPPublicKeyField(max_length=100)  connection_string_3 = fields.CharPGPPublicKeyField(max_length=100)  aws_region = models.CharField(max_length=20)  owner_id = models.IntegerField()  last_update_date = models.DateTimeField(default=dbcurr_ts)  working_schema = models.CharField(max_length=100)  service = models.CharField(max_length=100)   def generate_enc(mystrenc):  return 'pass'   class Meta:  managed = False  db_table = 'connection_details'  verbose_name = 'connection_details'  verbose_name_plural = 'connection_details'  class ConnectionTypes(models.Model):  connection_type_id = models.IntegerField(primary_key=True,default=re_sequence('connection_type_seq'))  connection_type_name = models.CharField(max_length=100)  connection_type_desc = models.CharField(max_length=300)  connection_type_category = models.CharField(max_length=100)  last_update_date = models.DateTimeField(default=dbcurr_ts)  class Meta:   managed = False  db_table ='connection_types'  verbose_name = 'connection_types'  verbose_name_plural = 'connection_types'  

Не могли бы вы, пожалуйста, дать мне знать, какую ошибку я совершаю?

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

1. Можете ли вы добавить шаблон, который отображает форму и, возможно, представление, к вашему вопросу

2. Спасибо Иэн за ваш ответ и время. Теперь проблема решена.

Ответ №1:

Одна из проблем заключается в том, что поле модели для connecton_types принимает целое поле. Тем не менее, вы даете ему поле выбора модели в форме. Я думаю, что если вы установите connection_type как models.ForeignKey(ConnectionType, on_delete=models.CASCADE) или что-то подобное в своем models.py, это должно работать лучше. Таким образом, тип подключения напрямую связан с любыми имеющимися у вас данными подключения.

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

1. Спасибо dbo123!! Да, я не понимал, что … В базе данных есть правильный внешний ключ, и я пропустил его в модели. Я добавил FK и удалил поле выбора модели. Это сработало!! Спасибо..