Здравствуйте. Только начал изучать django. Подскажите пожалуйста, как из двух моделей вывести поле "сol_vo" в HTML
models.py
from collections import OrderedDict
#from ipaddress import summarize_address_range
from django.db import models
from django.contrib.auth.models import User
from django.dispatch import receiver
from django.db.models.signals import post_save
from accounts.models import Brigade, Profile
#from tasks.admin import Calculation
from django.db.models import Sum
class Tag(models.Model):
name = models.CharField(max_length=50, verbose_name='Виды работ')
col_vo = models.DecimalField(verbose_name='Количество', null=True, blank=False, max_digits=5, decimal_places=2,)
units = models.CharField(verbose_name='Ед.изм', null=True, blank=True, max_length=10)
price = models.DecimalField(verbose_name='Цена', null=True, blank=True, max_digits=10, decimal_places=2,)
total = models.IntegerField(verbose_name='Сумма', null=True, blank=True,)
note = models.TextField(verbose_name='Примечание', null=True, blank=True,)
ready_to_work = models.IntegerField(verbose_name='Готовность работ', default=0, choices=((0, 'Не подтверждено'), (1, 'В работе'),
(2, 'Выполнено'), (3, 'Не возможно'), (4, 'Отменено')),)
def __str__(self):
return self.name
def save(self, *args, **kwargs):
self.total = self.col_vo * self.price
super().save(*args, **kwargs)
class Meta:
verbose_name = ("Виды работы")
verbose_name_plural = ("Виды работ")
class Task(models.Model):
COMPANY_CHOICES = [
('АЮ', 'Ап-Юг',),
('АТ', 'АТ',),
]
date = models.DateField(verbose_name='Дата')
tag = models.ForeignKey(Tag, verbose_name='Виды работ', null=True, blank=False, on_delete=models.SET_NULL,)
name = models.CharField(max_length=70, verbose_name='Адрес работ', blank=False)
description = models.TextField(verbose_name='Подробное описание задачи', blank=False,)
company = models.CharField(max_length=8, verbose_name='Компания', choices=COMPANY_CHOICES,)
employees = models.ForeignKey(Brigade, verbose_name='Бригада', null=True, blank=True, on_delete=models.SET_NULL,)
def __str__(self):
return self.name
class Meta:
verbose_name = ("Задача")
verbose_name_plural = ("Задачи")
ordering = ['-date']
forms.py
from django import forms
from .models import Tag, Task ,Calculation
class TaskForm(forms.ModelForm):
date = forms.DateField(widget = forms.DateInput(attrs=dict(type='date')),)
class Meta:
model = Task
fields = ('date', 'tag', 'name', 'col_vo', 'description', 'company', 'employees',)
widgets = {
'name': forms.TextInput(attrs={'class': 'input', }),
'description': forms.Textarea(attrs={'class': 'textarea', }),
}
views.py
class TaskCreateView(LoginRequiredMixin, CreateView):
form_class = TaskForm
template_name = 'tasks/create_or_update_task.html'
HTML
<section class="section">
<div class="container">
<div class="columns">
<div class="column is-offset-4 is-4">
<div class="content">
{% if update %}
<h1>Изменить задачу</h1>
{% else %}
<h1>Добавить задачу</h1>
{% endif %}
</div>
<form method="post">
{% csrf_token %}
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.date.errors }}
<label for="{{ form.date.id_for_label }}">Дата:</label>
{{ form.date }}
</div>
<div class="fieldWrapper">
{{ form.tag.errors }}
<label for="{{ form.tag.id_for_label }}">Виды работ:</label>
{{ form.tag }}
</div>
<div class="fieldWrapper">
{{ form.name.errors }}
<label for="{{ form.name.id_for_label }}">Адрес работ:</label>
<input id="address" name="name" type="text" />
</div>
<div class="fieldWrapper">
{{ form.col_vo.errors }}
<label for="{{ form.col_vo.id_for_label }}">Кол.во:</label>
{{ form.col_vo }}
</div>
<div class="fieldWrapper">
{{ form.description.errors }}
<label for="{{ form.description.id_for_label }}">Подробное описание:</label>
{{ form.description }}
</div>
<div class="fieldWrapper">
{{ form.company.errors }}
<label for="{{ form.company.id_for_label }}">Компания:</label>
{{ form.company }}
</div>
<div class="fieldWrapper">
{{ form.employees.errors }}
<label for="{{ form.employees.id_for_label }}">Исполнитель:</label>
{{ form.employees }}
</div>
{% if update %}
<button class="button is-link" style="margin-top: 20px; width: 150px; height: 45px;">Сохранить</button>
{% else %}
<button class="button is-link" style="margin-top: 20px; width: 150px; height: 45px;">Добавить</button>
{% endif %}
</form>
</div>
</div>
</div>
</section>
views.p
Здесь был создан объект, через который позже мы будем выводить данные:
from django.shortcuts import render
from .models import Tag
from .forms import TaskForm
def name(request):
tag = Tag.objects.all()
if request.method == 'POST':
form = TaskForm(request.POST)
form.save()
else:
form = TaskForm()
return render(request, 'path/file.html', {'tag':tag})
HTML
Этот кусочек кода нужно вставить в HTML файл и он выведет все данные из БД, которые вводились в поле col_vo
:
{% if tag in el %}
{{ el.col_vo }}
{% endif %}