как я могу сохранить html значение флажка в django базе данных - PullRequest
0 голосов
/ 03 марта 2020

Я работаю над проектом подписки, который позволяет пользователю выбрать несколько служб с помощью флажка, а затем рассчитать общую стоимость этих услуг (что-то вроде выбора нескольких писем из вашей почтовой учетной записи), у меня они есть в HTML и Js код, но я хочу иметь возможность сохранять каждый выбранный сервис в БД, пожалуйста, как мне заархивировать этот

<form action="{% url 'sub:basic_starter' %}" id="subscription" method="post">
        {% csrf_token %}
          <fieldset>
            <legend><h5><strong>Business Type: </strong> New Business </h5> </legend>
             <label>Brand Value Design:                       N6,180.00
              <input type="checkbox" value=" 6179.50" name="services" id="bs1" onclick="subscribe())">
            </label><br><br>
            <label>Business Development:                     N6,180.00
              <input type="checkbox" value="6180.00" name="services" id="bs2" onclick="subscribe())">
            </label><br><br>
            <label>Website Design & Dev:              N6,180.00
              <input type="checkbox" value=" 6180.00" name="services" id="bs3" onclick="subscribe())">
            </label><br><br>
            <label>Mobile Application :          N6,180.00
              <input type="checkbox" value="6180.00" name="services" id="bs4" onclick="subscribe())">
            </label><br><br>
            <label>Maintenance(Host & Domain):             N5,450.00
              <input type="checkbox" value="5450.00" name="services" id="bs5" onclick="subscribe())">
            </label><br><br>
            <label>Social Media Management:
              <input type="checkbox" value="" name="services" id="bs6" onclick="subscribe())">
            </label><br><br>
            <input type="text" readonly="readonly" id="total" value="N0.00" ><script>document.getElementById('total').innerHTML=price;</script><br><br>
            <input type="submit" value="Subscribe" class="btn btn-success"></a></button><br>
          </fieldset>
       </form>          
    </div>  

JS

function subscribe(){
let input = document.getElementsByName('services'),
 total = 0.00,
 form = document.getElementById('subscription');
for (let i = 0; i < input.length; i++) {
    if(input[i].checked){
         total += parseFloat(input[i].value)
         let price = 'N' + total
    }    
}
document.getElementById('total').value = total.toFixed(3)

} document.getElementById ( 'subscription'). addEventListener ('изменить', подписаться)

Views.py

@login_required
def subscribe(request):
    service_list = []
    if request.method == 'POST':
        sub_form = MembershipForm(request.POST)
        if sub_form.is_valid() and sub_form.cleaned_data:
            service_list.append(sub_form.data['service_name'])
            sub_form.save()
    else:
         sub_form =MembershipForm()
    return render(request, 'sub/subscribe_form.html',{'sub_form':  
    sub_form})

Url path('sub', views.subscribe, name='subscribe'),

Forms

class MembershipForm(forms.ModelForm):
    class Meta:
        model = Services
        fields = ('service_name', 'price',)

Модели

class Services(models.Model):
    package_name = models.CharField(max_length=100)
    category = models.CharField(max_length=200)
    service_name = models.CharField(max_length=250)
    price = models.DecimalField(max_digits=9, decimal_places=2)

    def __str__(self):
        return self.service_name

    class Meta:
        unique_together = ('package_name', 'service_name')


class CompanySubscription(models.Model):
    company_name = models.ForeignKey(CompanyProfile,  
     on_delete=models.CASCADE)
    services = models.ForeignKey(Services, on_delete=models.CASCADE)
    duration = models.CharField(max_length=50)
    timestamp= models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.company_name

1 Ответ

0 голосов
/ 04 марта 2020

Если вы хотите получить все отмеченные значения флажков, вы должны написать ниже в вашем представлении ...

@login_required
def subscribe(request):
    service_list = []
    if request.method == 'POST':
        sub_form = MembershipForm(request.POST)
        if sub_form.is_valid() and sub_form.cleaned_data:

            services_price_list = request.POST.getlist('services[]')

            service_list.append(sub_form.data['service_name'])
            services_obj = sub_form.save(commit=False)
            services_obj.price = sum(services_price_list)
            services_obj.save()
    else:
         sub_form =MembershipForm()
    return render(request, 'sub/subscribe_form.html',{'sub_form':  
    sub_form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...