Как использовать get_fields () для доступа к значениям поля M2M - PullRequest
0 голосов
/ 20 апреля 2020

Я использую get_fields (), чтобы получить подсказку всех имен и значений полей модели:

def get_model_fields(self, obj, fields):

    model_fields = {}

    for f in self.model._meta.get_fields(include_hidden=True):
         value = getattr(obj, f.name)
         model_fields.append({
                        'label': f.verbose_name
                        'name': f.name,
                        'help_text': f.help_text,
                        'value': value,
                        'class': str(f.__class__)})

 return model_fields 

Это хорошо работает, за исключением полей ManyToMany, где label, name, help_text и class все отображаются нормально, но значение возвращается [modelname].None, несмотря на то, что оно содержит значения.

Например:

models.py

class MyModel(models.Model):
     m2m_field = models.ManyToManyField(...)
     char_field = models.CharField()

просмотров .py

def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        view_data = []
        view_data = get_model_fields(self, context['object'], self.fields)
        context['view_data'] = view_data

        return context

шаблон. html

{% for f in view_data %}
  {{f.label}}
  {{f.value}}
{% endfor %}

Это вернет метку и значение правильно для char_field, но только метку для m2m_field и значение как MyModel.None.

Как добавить значения поля ManyToMany к этой функции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...