Django formset отображается в одном приложении, но не в другом - PullRequest
0 голосов
/ 13 января 2020

Итак, у меня есть Django приложение relate. Я хочу использовать formset для отображения как можно большего числа Topics. Моя проблема в том, что, когда я отрисовываю шаблон, ничего не появляется. Однако, когда я переместил соответствующие строки кода в другое приложение Django, которое также использует набор форм, набор форм работает отлично. Как бы я не хотел переходить в другое приложение, которое я sh мог бы попробовать разработать из relate. Я думал, что, может быть, есть реализации / импорты, которые есть в другом приложении, которые позволяют ему реализовать мой набор форм. Но я проверил все и не нашел ничего, что могло бы помешать работе моей формы. Буду очень признателен за вашу помощь. Заранее спасибо!

models.py

from __future__ import unicode_literals
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from django.conf import settings

class Topic(models.Model):
    name = models.CharField(max_length=250)
    concepts = models.TextField()

    def __str__(self):
        return self.name 

forms.py

from django.db import models
from django import forms
from django.forms import ModelForm, formset_factory
from relate.models import Topic

 class TopicForm(ModelForm):
    class Meta:
        model = Topic
        fields = ['name', 'concepts',]

views.py

from __future__ import unicode_literals
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.conf import settings
from relate.forms import TopicForm
from django.views.generic import View
from django.forms import formset_factory
from relate.models import Topic

def relate_topics(request, method="POST"):
    TopicFormSet = formset_factory(TopicForm, extra=2, max_num=10, can_delete=True)
    if request.method == "GET":
        formset = TopicFormSet(request.GET or None)
    elif request.method == "POST":
        formset = TopicFormSet(request.POST)
        if formset.is_valid():
            for form in formset:
                form.save()
            return redirect('index')
    return render(request, 'relate/relate_topics.html', {'formset': formset,})

relte_topics. html

    <h1>Hey</h1>
    {% csrf_token %}
    {{ formset.management_form }}
    {% for form in formset %}
        {{ form.as_p }}
    {% endfor %}

urls.py

from django.conf.urls import url
from . import views

appname = 'relate'

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^relate_topics/$', views.relate_topics, name='relate_topics'),
]
...