Джанго предварительно выбрал флажок с формами - PullRequest
0 голосов
/ 06 октября 2019

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

Теперь я хотел бы сохранить фактические месяцы обслуживания в базе данных с предварительно установленными флажками. Для этого я создал таблицу со всеми месяцами года и установил слишком много связей с возможными интервалами.

Как можно предварительно установить флажки в зависимости от возможностей интервала?

Я надеюсь, что это понятно, и спасибо за вашу помощь. Вот мой код:

models.py

ss Systems(models.Model):

    systemUUID = models.CharField(max_length=30)
    idNum = models.CharField( max_length=50)
    postalcode = models.CharField(max_length=10, blank=True)
    city = models.CharField(max_length=50, blank=True)
    street = models.CharField(max_length=150, blank=True)
    fitter_mailaddress = models.EmailField(blank=True)
    general_mailaddress = models.EmailField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    personnel_maintenance_per_year = models.ForeignKey(Personnel_maintenance_per_year, on_delete=models.SET_NULL, null=True)
    select_the_maintenance_months = models.ForeignKey(Select_the_maintenance_months, on_delete=models.SET_NULL, null=True)
    jan = models.BooleanField()
    feb = models.BooleanField()
    mar = models.BooleanField()
    apr = models.BooleanField()
    may = models.BooleanField()
    jun = models.BooleanField()
    jul = models.BooleanField()
    aug = models.BooleanField()
    sep = models.BooleanField()
    oct = models.BooleanField()
    nov = models.BooleanField()
    dec = models.BooleanField()


def __str__(self):
    return self.systemUUID

def get_absolute_url(self):
    return reverse('systems-detail', kwargs={'pk': self.pk})

form.py

(в настоящее время не используется)

class SystemForm(forms.ModelForm):

class Meta:
    model = Systems

    fields = ['systemUUID', 'idNum', 'postalcode', 'city', 'street', 'fitter_mailaddress', 'general_mailaddress']


    jan = forms.BooleanField(required=False, initial=True)
    feb = forms.BooleanField(required=False, initial=True)
    mar = forms.BooleanField(required=False, initial=True)
    apr = forms.BooleanField(required=False, initial=True)
    may = forms.BooleanField(required=False, initial=True)
    jun = forms.BooleanField(required=False, initial=True)
    jul = forms.BooleanField(required=False, initial=True)
    aug = forms.BooleanField(required=False, initial=True)
    sep = forms.BooleanField(required=False, initial=True)
    oct = forms.BooleanField(required=False, initial=True)
    nov = forms.BooleanField(required=False, initial=True)
    dec = forms.BooleanField(required=False, initial=True)

view.py

class SystemCreateView(LoginRequiredMixin, CreateView):
model = Systems
fields = ['systemUUID', 'elevatorNum', 'postalcode', 'city', 'street', 'fitter_mailaddress',
          'general_mailaddress', 'personnel_maintenance_per_year', 'select_the_maintenance_months', 'jan',
          'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']

def form_valid(self, form):
    form.instance.author = self.request.user
    return super().form_valid(form)

def load_cities(request):
personnel_maintenance_per_year_id = request.GET.get('personnel_maintenance_per_year')
    maintenance_months = Select_the_maintenance_months.objects.filter(personnel_maintenance_per_year_id=personnel_maintenance_per_year_id).order_by('name')
    ids = []
    for month in maintenance_months:
        print('Maintenance Month PK ',month.pk)
        mon = Months.objects.filter(maintenance_months__name__contains=month)
        print(mon)
        #m2m = User.select_the_maintenance_months_months.through.objects.filter(select_the_maintenance_months_id=month.pk)
        #print('Relations ',m2m)
    return render(request, 'users/city_dropdown_list_options.html', {'maintenance_monthses': maintenance_months})#, 'month': mon})

dropdown_list.html

<option value="">---------</option>
{% for maintenance_months in maintenance_monthses %}
<option value="{{ maintenance_months.pk }}">{{ maintenance_months.name }}</option>
{% endfor %}

new_system_form.html

{% extends "users/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
    <form method="POST" id="systemsForm" data-cities-url="{% url 'ajax_load_cities' %}" novalidate>
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">New System</legend>
            {{ form.as_table }}
        </fieldset>
        <legend class="border-bottom mb-4"></legend>
        <div class="form-group">
            <button class="btn btn-outline-info" type="submit">Save</button>
            <a class="btn float-right btn-secondary btn-sm mt-1 mb-1" href="{% url 'list-systems' %}">Back</a>
        </div>

    </form>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script>
  $("#id_personnel_maintenance_per_year").change(function () {
    var url = $("#systemsForm").attr("data-cities-url");
    var personnel_maintenance_per_yearId = $(this).val();

  $.ajax({
    url: url,
    data: {
      'personnel_maintenance_per_year': personnel_maintenance_per_yearId
    },
    success: function (data) {
      $("#id_select_the_maintenance_months").html(data);

    }
  });

});
 </script>
</div>
{% endblock content %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...