Django Модальное заполнение из значений в текущей html среде - PullRequest
0 голосов
/ 09 июля 2020

У меня есть DetailView, который использует FormMixin, который используется для рендеринга шаблона.

Из этого шаблона у меня есть две кнопки, которые используются для вызова некоторых всплывающих модальных окон.

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

Модели .py

class user_stats(models.Model):
    User = models.ForeignKey(User, on_delete=models.PROTECT)
    Action = models.CharField(max_length=100, choices=Action_Choices)
    Outcome = models.CharField(max_length=100, choices=Outcome_Choices)
    Notes = models.TextField()
    Account_Number = models.DecimalField(max_digits=18, decimal_places=0, null=True)
    action_time = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.User

class Accountinforamtion(models.Model):
    run_date = models.DateField(db_column='Run_Date', blank=True, null=True)  # Field name made lowercase.
    acct_num = models.DecimalField(db_column='ACCT_NUM', max_digits=18, decimal_places=0, blank=True, primary_key=True)  # Field name made lowercase.
    cust_num = models.DecimalField(db_column='CUST_NUM', max_digits=9, decimal_places=0, blank=True, null=True)  # Field name made lowercase.

Views.py

class AccountDetailView(FormMixin, DetailView):
    model = Accountinforamtion
    context_object_name = 'profile'
    form_class = UserInputForm
    template_name = 'Home/detail.html'

    def get_success_url(self):
        return reverse('home')

    def get_object(self):
        try:
            my_object = Accountinforamtion.objects.get(acct_num=self.kwargs.get('pk'))
            return my_object
        except self.model.DoesNotExist:
            raise Http404("No MyModel matches give the query")

    def get_context_data(self, *args, **kwargs):
        context = super(AccountDetailView, self).get_context_data(*args, **kwargs)
        profile = self.get_object()
        #form
        context['form'] = self.get_form()
        context['profile'] = profile
        return context

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            stat = form.save(False)
            stat.User = request.user
            stat.Account_Number = self.get_object().acct_num
            #print(request.META.get("REMOTE_ADDR"))
            #print(socket.gethostbyaddr(request.META.get("REMOTE_ADDR")))
            stat.save()
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        return super(AccountDetailView, self).form_valid(form)

    def form_invalid(self, form):
        return super(AccountDetailView, self).form_invalid(form)


class LinkedAccountModal(ListView):
    model = user_stats
    template_name = 'Home/LinkedAccountsModal.html'

    def get_queryset(self):
        try:
            query = self.request.GET.get('q1')
            object_list1 = user_stats.objects.filter(Q(acct_num=query)).first().cust_num
            object_list2 = user_stats.objects.get(object_list1).acct_num
            print('test')
            return object_list2
        except:
            object_list2 = []
            print('You Effed Up')
            return object_list2

urls.py

urlpatterns = [
    path('', views.home, name='home'),
    path('search/', login_required(views.SearchResultView.as_view()), name='account-search'),
    path('search/<int:pk>/', views.AccountDetailView.as_view(), name='account-detail'),
    #path('user_input_form/', require_POST(views.MyFormView.as_view()), name='User_input_Form_View'),
    path('search/modal/', views.LinkedAccountModal.as_view(), name='linked-account-modal'),
]

Модальная форма:

<form method = "get" action="{% url 'linked-account-modal' }">
                <div class="card text-white bg-info mb-3" style="max-width: 16rem;">
                    <div class="card-header bg-info" style="text-align:center">Linked Accounts</div>
                    <div class="card-body" style="align-items: center; justify-content: center; text-align:center;">
                        <input value="{{ object.acct_num }}" name="q1" type="submit">
                        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#LinkedAccounts">
                          Click for Linked Accounts
                        </button>
                    </div>
                </div>
            </form>

Сама модальная форма:

<div class="modal fade" id="LinkedAccounts" tabindex="-1" role="dialog" aria-labelledby="LinkedAcountsModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="LinkedAcountsModalLabel">Linked Accounts</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
          <ul>
              <li>{{ object_list2.acct_num }}</li>
          </ul>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

Прилагаемая форма, содержащая кнопку, имеет тег, содержащий информацию, которую я хочу передать. Я попытался передать его в самой кнопке.

Когда я нажимаю на кнопки для генерации модальных окон, модальное окно появляется, но, похоже, оно не запускает / не отображает модальное представление связанной учетной записи.

В двух словах:

Требуется создать модальное окно, содержащее дополнительные сведения на основе информации, которую просматривает текущий пользователь. при нажатии модальной кнопки для этой учетной записи появится модальное окно с примечаниями et c.

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