Как отобразить доступные только для чтения поля без метки в Django Admin?

#python #django #django-models #django-forms #django-admin

#python #django #django-модели #django-forms #django-admin

Вопрос:

Я пытаюсь отобразить некоторые данные в моем Django admin ReadOnlyFields , но я не могу отобразить, я хочу отобразить emailid и verify_emailid в той же строке в полях, я могу сделать это с помощью fieldset , но он также отображает ярлык, пожалуйста, дайте мне знать, как я могу отобразить данные без таблицы.

Вот мой admin.py файл…

 class MyModelAdmin(ReadOnlyAdminMixin, CustomModelAdmin):
  fields = (('emailid','verify_emailid),'mobilenumber','type')
  

здесь emailid и verify_emailid отображаются в одной строке, но проблема заключается в verify_emailid отображаемой метке, и мне не нужна метка verify_emailid , пожалуйста, дайте мне знать, как я могу удалить verify_emailid метку…

Ответ №1:

Если вы хотите полностью контролировать текст для определенной строки, вы можете добавить метод для управления этой строкой, а затем добавить этот метод в качестве поля только для чтения:

Решение

 from django.utils.html import format_html

class MyModelAdmin(ReadOnlyAdminMixin, CustomModelAdmin):
  fields = ('my_custom_line','mobilenumber','type')

  def my_custom_line(self, instance):
     return format_html('<p>{} {}</p>', instance.emailid, instance.verify_emailid)
  

Как работает решение

Любой метод в ModelAdmin классе, который возвращает некоторый текст, может использоваться в качестве поля только для чтения. Вы можете прочитать больше об этом в документах.

format_html это просто безопасный способ вставки html, чтобы избежать различных атак. Значения, перечисленные после html, вставляются в html, как это обычно происходит. Вы можете отредактировать эту строку в любом случае, чтобы получить желаемый эффект. Вы можете прочитать об этом здесь.