CITextField в админке отображается как текстовая область, а не как одна строка
Я использую python 3.9 с django 4.1
Я только начинаю играть с этим, я хочу использовать CITextField из Postgresql
поэтому я импортировал его из django.contrib.postgres.fields
, он работает нормально, но админ отображает его как TextArea, что означает, что это не однострочный текст для ввода, это все поле текста для ввода, даже если я настроил максимальную длину в 100 символов. как я могу это исправить?
В качестве примера, чтобы показать проблему, я создал модель Country с name_en
, которая является CharField
и name_fr
и name_he
, которые являются CITextField
, все они имеют максимальную длину 100 символов:
class Country(models.Model):
class Meta:
verbose_name_plural = "Countries"
name_en = models.CharField(unique=True, verbose_name="English Country Name", max_length=100)
name_fr = CITextField(unique=True, verbose_name="French Country Name", max_length=100)
name_he = CITextField(unique=True, verbose_name="Hebrew Country Name", max_length=100)
Когда я просматриваю его на странице администратора, вот результат:
что я могу сделать, чтобы решить эту проблему?
Спасибо
Я могу создать свой собственный класс модели и использовать его для возврата TextInput
вместо FormField
, мне не очень нравится этот ответ, я заметил, что ширина CharField больше, чем ширина моего пользовательского textField, поэтому он не действует точно так же.
так это MyCITextField
то, что я определил
class MyCITextField(CITextField):
def formfield(self, **kwargs):
kwargs.update({"widget": forms.TextInput})
return super(MyCITextField, self).formfield(**kwargs)
и имея это в качестве модели:
class Country(models.Model):
class Meta:
verbose_name_plural = "Countries"
name_en = MyCITextField(unique=True, verbose_name="English Country Name", max_length=100)
name_fr = models.CharField(unique=True, verbose_name="French Country Name", max_length=100)
name_he = models.CharField(unique=True, verbose_name="Hebrew Country Name", max_length=100)
результат:
Так что, как вы можете видеть, это не одно и то же, я хочу, чтобы визуальность была одинаковой.