Как сделать кликабельную ссылку, чтобы добавить элементы в список? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть простой веб-интерфейс, который показывает номера активов для единиц оборудования в базе данных нашей компании. У меня есть кликабельная ссылка рядом с номером, который говорит Deploy и Return. Я хотел бы, чтобы, когда кто-то нажимал Deploy, номер актива для этого конкретного оборудования добавлялся в список (в конце концов, в файл csv для печати) вместе с необходимой моделью и серийными номерами.

Как я могу заставить кликабельную ссылку выполнять функцию, которая берет этот конкретный номер актива рядом с ним, ищет в базе данных ее модель и серийные номера и добавляет их в список?

Идея заключается в том, что я могу щелкнуть Deploy на куче ресурсов и разместить их на листе развертывания, который подходит для печати. Я новичок в Django, и я использовал учебник Mozilla для скелета этого сайта, но теперь я немного покидаю резервацию. Спасибо!

models.py:

from django.db import models
from django.urls import reverse #Used to generate URLs by reversing the URL patterns
from django.contrib.auth.models import User
import uuid
from datetime import date

class ModelInstance(models.Model):
    asset = models.CharField('Asset Number', max_length = 50, help_text = "Enter Weston or Government I.D. Tag Number")
    model = models.ForeignKey('Model', on_delete = models.SET_NULL, null = True, help_text = "Leave blank if no model number exists")
    serial = models.CharField('Serial Number', max_length = 50, null = True, blank = True, help_text = "Leave blank if no serial number exists")
    location = models.ForeignKey('Location', on_delete = models.SET_NULL, null = True, help_text = "Enter current location or location after manufacturing")
    ownership = models.ForeignKey('Ownership', on_delete = models.SET_NULL, null = True, help_text = "Enter current owner of equipment")
    borrower = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)

    STATUS = (
        ('M', 'Maintenance'),  #being worked on, not available
        ('D', 'Deployed'),   #in the field
        ('A', 'Available'),   #ready to go
        ('R', 'Reserved'), #Being used for classified/other project but not deployed
        ('K', 'Broken'), #Broken
    )

    status = models.CharField(
        max_length = 1,
        choices = STATUS,
        blank = True,
        default = 'A',
        help_text = 'Equipment Availability',
    )

    note = models.TextField('Notes', max_length = 1000, null = True, blank = True)

    date_added = models.DateField("Date Added", default=date.today())

    def __str__(self):
        return f'Asset Number: {self.asset}..........Serial Number: {self.serial}..........Location: {self.location}..........Ownership: {self.ownership}'

class Category(models.Model):
    category = models.CharField('Equipment Type', max_length = 50, help_text = "Enter general category of equipment")

    class Meta:
        verbose_name_plural = "categories" #default would have shown as "Categorys" on admin page

    def __str__(self):
        return self.category

category_list.html

{% extends "base_generic.html" %}

{% block content %}
    <div style="margin-left:20px; margin-top:20px">
      <h1>Model list</h1>
    </div>

  {% if category_list %}
    {% for category in category_list %}
        <ul><strong>{{ category }}</strong></ul>
            <ul>
              {% for model in category.model_set.all %}
                <a href="{{ model.get_absolute_url }}"> {{ model.model_number }}..............{{ model.description }} </a>
            <ul>    {% for copy in model.modelinstance_set.all %}
                    <li>{{ copy.asset }} <a href="">Deploy</a> <a href="">Return</a>
                    <p class="{% if copy.status == 'A' %}text-success{% elif copy.status == 'M' %}text-danger{% else %}text-warning{% endif %}">{{ copy.get_status_display }}</p>
                    </li>
                    {% endfor %}
            </ul>

              {% endfor %}
            </ul>
    {% endfor %}
  {% else %}
        <p>There is no equipment in the database</p>
  {% endif %}

{% endblock %}

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('books/', views.BookListView.as_view(), name='books'),
    path('book/<int:pk>', views.BookDetailView.as_view(), name='book-detail'),
    path('models/', views.ModelListView.as_view(), name='models'),
    path('model/<int:pk>', views.ModelDetailView.as_view(), name='model-detail'),
    path('category/', views.CategoryListView.as_view(), name='categories'),
]

urlpatterns += [
    path('mybooks/', views.LoanedBooksByUserListView.as_view(), name='my-borrowed'),
]

urlpatterns += [
    path('book/<uuid:pk>/renew', views.renew_book_librarian, name="renew-book-librarian"),
]

views.py

from django.shortcuts import render #generates HTML fiels using a template and data
#from django.http import HttpResponse
from .models import Book, Author, BookInstance, Genre, Model, ModelInstance, Category, Ownership, Manufacturer, Location #imports model classes to access data in views
from django.views import generic

class BookListView(generic.ListView):
    model = Book

class BookDetailView(generic.DetailView):
    model = Book

class ModelListView(generic.ListView):
    model = Model

class ModelDetailView(generic.DetailView):
    model = Model

class CategoryListView(generic.ListView):
    model = Category
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...