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)

Когда я просматриваю его на странице администратора, вот результат:

admin page of country model

что я могу сделать, чтобы решить эту проблему?

Спасибо

Я могу создать свой собственный класс модели и использовать его для возврата 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)

результат:

MyCITextField used

Так что, как вы можете видеть, это не одно и то же, я хочу, чтобы визуальность была одинаковой.

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