#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 и удалил поле выбора модели. Это сработало!! Спасибо..