Перенос данных из формы в представление django - PullRequest
0 голосов
/ 12 января 2019

У меня есть форма:

class GenereteReport (forms.ModelForm):
    olddate = DateField (widget = forms.DateInput (attrs = {'type': 'date'}))
    newdate = DateField (widget = forms.DateInput (attrs = {'type': 'date'}))

    class Meta:
        model = Transactions
        fields = ['typeOper', 'category']

Мне нужно выбрать данные из базы данных в диапазоне от olddate до newdate

class ChartData (APIView):
    authentication_classes = []
    permission_classes = []

    def get (self, request, format = None):
        labels = []
        default_items = []
        transacts = Transactions.objects.all ()
        for transact in transacts:
            labels.append (transact.category.name)
            default_items.append (int (transact.suma))
        data = {
            "labels": labels,
            "default": default_items,
        }
        return response (data)

модель

class Transactions(models.Model):
    category = models.ForeignKey(Category, blank=True, null=True, default=None, on_delete=models.CASCADE)
    typeOper = models.ForeignKey(TypeOperation, blank=True, null=True, default=None, on_delete=models.CASCADE)
    suma = models.DecimalField(max_digits=10000, decimal_places=2, default=0)
    created = models.DateTimeField(auto_now_add=True, auto_now=False)
    description = models.TextField(blank=True, null=True, default=None)



    def __str__(self):
        return "Category {0}".format(self.category)

что делать вместо transacts = Transactions.objects.all () для выбора данных в диапазоне дат в форме из базы ссылка на репозиторий https://github.com/IvanYukish/PersonalFinanceManager

1 Ответ

0 голосов
/ 13 января 2019

Итак, в вашей функции get вам нужно будет добавить код для правильной обработки формы и получить две очищенные проверенные даты из формы. Этот фрагмент документации django показывает, как это сделать: django работает с формами

После того, как вы проверите, что форма действительна, у вас будет доступ к form.cleaned_data, который является словарем, содержащим все очищенные поля формы. old_date = form.cleaned_data['olddate'] даст вам первое свидание в вашей форме, также как и второе. Получив их, вы можете filter свои транзакции, например так: Transactions.objects.filter(created__gte=olddate, created_lte=newdate). Это говорит: покажи мне все транзакции, у которых created дата больше или равна olddate и меньше или равна newdate.

...