Как я могу получить доступ к отдельным Django запутанным элементам JSONField в форме с помощью jinja? - PullRequest
0 голосов
/ 22 апреля 2020

Кто-нибудь знает, как я могу добавить отдельные элементы entangled_field в свою форму? Вот мой код, я объясню ниже (в форме. html), где у меня возникают проблемы.

models.py

class Project(Model):
    """Project Data"""

eeg = JSONField()
meg = JSONField()

forms.py

class ProjectForm(EntangledModelForm):
    """HTML form for Project objects
    https://github.com/jrief/django-entangled"""

    nosessions = IntegerField(required=False)
    sessionduration = IntegerField(required=False)
    hoursrequired = IntegerField(required=False)
    esthourspermonth = IntegerField(required=False)

    class Meta:
        model = Project
        entangled_fields = {
            "eeg": [
                "nosessions",
                "sessionduration",
                "hoursrequired",
                "esthourspermonth",
            ],
            "meg": [
                "nosessions",
                "sessionduration",
                "hoursrequired",
                "esthourspermonth",
            ],
        }
        untangled_fields = [..working fields..]

views.py

class ProjectCreate(LoginRequiredMixin, CreateView):
    """Create new Projects via HTML form"""

    form_class = ProjectForm
    model = Project
    template_name = "project/form.html"
    extra_context = {"update": False}
    login_url = "/account/login/"

Django object

proj112 = Project.objects.get(name='112_test')

for k,v in proj112.eeg.items():
    print(k,v)
nosessions 5
hoursrequired 10
sessionduration 2
esthourspermonth 10

for k,v in proj112.meg.items():
    print(k,v)
nosessions 10
hoursrequired 20
sessionduration 2
esthourspermonth 20

proj112.meg['nosessions']    # returns the value as expected
proj112.meg.nosessions    # returns AttributeError: 'dict' object has no attribute 'nosessions' so I understand why it's not passed to jinja 

detail. html - Я могу успешно получить доступ / перечислить ключи и значения для 'eeg' и 'meg' после их создания (вручную через API или базу данных).

<table>
  <b>EEG</b>
{% for key,value in project.eeg.items %}
    <tr>
        <td>{{key}}</td><td>{{value}}</td>
    </tr>
{% endfor %}
</table>
<table>
  <b>MEG</b>
{% for key,value in project.meg.items %}
    <tr>
        <td>{{key}}</td><td>{{value}}</td>
    </tr>
{% endfor %}
</table>

form. html - Это поле отображает правильно, но вставляет данные как 'eeg', так и 'meg'.

{{ form.nosessions|as_crispy_field }}

Я хочу ссылаться на них отдельно, так как у меня намного больше, чем meg и Например,

{{ form.eeg.nosessions|as_crispy_field }}

Правильно ли я поступаю?

Заранее большое спасибо

...