создать представление объекта oneToMany в представлении связанных объектов - PullRequest
0 голосов
/ 16 января 2019

У меня есть анкета, содержащая множество вопросов с их ответами.Моя главная цель - создать веб-страницу, где я могу показать детали анкеты со списком правил (вопрос / ответ), а в нижней части страницы я хочу вызвать страницу создания правила:

def create_rule_view(request, id, sc_id):
if request.method == "POST":
    input = InputForm(request.POST)
    answer = AnswerForm(request.POST)
    rule = RuleForm(request.POST)
    if rule.is_valid() and input.is_valid() and answer.is_valid():
        r = rule.save()
        i = input.save(commit=False)
        a = answer.save(commit=False)
        i.rule_id = r
        i.save()
        a.rule_id = r
        a.save()
        question = input.cleaned_data["patterns"]
else:
    input = InputForm()
    answer = AnswerForm()
    rule = RuleForm()

return render(request, "rule/create_rule.html", {
    'rule': rule,
    'input': input,
    'answer': answer
})

def detail_scenario(request, id, sc_id):
    object = get_object_or_404(Scenario, id=sc_id)
    # TODO : add rule in the same view
    create_rule_div = create_rule_view(request, id, sc_id)
    print("content", create_rule_div)
    context = {
        'scenario': object,
        'create_rule_div': create_rule_div
    }
    return render(request, "scenario/detail_scenario.html", context)

Это rule_create.html:

{% block content %}

<form method="POST"> {% csrf_token %}
    <h2>Create Rule</h2>
    {{ rule.name}}
    {{ input.patterns }}
    {{ answer.text }}
    <input type="submit" value="Save Rule"/>

</form>
{% endblock %}

Это detail_senario.html:

{% block content %}


<h2>Scenario {{ scenario.id }}</h2>
<p>Scenario for : {{ scenario.chatbot_id }}</p>
<p>Name: {{ scenario.name }}</p>
<p>Description: {{ scenario.description }}</p>
<p>State: {{ scenario.state }}</p>
    {% for rule in scenario.rule_ids.all %}
        <li>{{ rule }}</li>
    {% endfor %}
    <div>{% block rule %}
    {{ create_rule_div.content }}{% endblock %}
    </div>
{% endblock %}

, когда я вызываю url detail_scenario, я получил HTML-код в навигаторе, например: html code in navigator Как я могу это исправить?Спасибо.

...