Вызов наборов запросов django, когда они нужны пользователю - PullRequest
0 голосов
/ 13 марта 2019

Я ходил туда-сюда с идеями, и ни одна из них не сработала, поэтому я буду просить идеи.У меня есть модель под названием «Список», которую пользователи могут создать, например, «Спящий режим». Затем у них есть вход, где они выбирают один из своих списков и могут добавить значение, например, 8. Хороший сон!После этого пользователь видит график, основанный на введенных им / ею данных. Все это уже работает, но я не могу найти способ упорядочить данные.

Я пытаюсь сделать это таксписок "sleep" вызывает все его значения на графике, а затем в другом списке, скажем, "money" показывает все свои денежные значения. Я использую chart.js для рисования графиков, и мне все равно, все ли они одновременно находятся наэкран или, если по одному, но по какой-то причине я не могу правильно вызвать эти наборы запросов. Единственный способ, которым это работает, - это если я использую .all (), и это не будет работать, так как у меня несколько пользователей.

Модели:

class List(models.Model):
    name = models.CharField(max_length=100, default="")
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='lists')

def __str__(self):
    return self.name

class Meta:
    unique_together = ['name', 'user']


class DataItem(models.Model):
    data = models.IntegerField(default=0)
    list = models.ForeignKey(List, on_delete=models.CASCADE, related_name='data_items')r code here

Просмотры

@login_required
    def app(request):
    form = list_form
    form2 = data_form

    user = request.user.pk
    user_lists = List.objects.filter(user=user)

    context = {'user_lists': user_lists, 'form': form, 'form2': form2}

return render(request, 'MyApp/app.html', context)

@require_POST
     def addItem(request):
     form = list_form(request.POST)

     if form.is_valid():
     user = request.user
     new_list = List(name=request.POST['text'], user=user)
     new_list.save()

return redirect('/app/')

@require_POST
def addData(request):
    form = data_form(request.POST)

    if form.is_valid():
    new_data = DataItem(data=request.POST['data'],  list=List.objects.get(id=request.POST['selection'])) 
    new_data.save()

return redirect('/app/')

«addItem» добавляет список (деньги и сон) «addData» добавляет значение в выбранный список

У меня нет клея, с чего начать делать то, что я описал. Должен ли я отфильтровать наборы данных в главном представлении? Создать собственное представление для него и вызвать их кнопками? Пожалуйста, укажите, если у вас есть идея, как сделать такоефункции, так как я довольно плохо знаком с Джанидти.Спасибо:)

1 Ответ

0 голосов
/ 13 марта 2019

Я так понимаю, вы хотите получить все списки, которые создал пользователь, а затем создать для них графики.Прежде всего, я рекомендую добавить DateTimeField() к модели DataItem.Например: created = models.DateTimeField(auto_now_add=True).

Затем в представлении вы можете получить все данные для списка пользователей следующим образом:

@login_required
def app(request):
    form = list_form
    form2 = data_form

    user = request.user.pk
    user_lists = List.objects.filter(user=user)

    list_data = {}
    for list in user_lists:
        list_data[list.name] = DataItem.objects.filter(list=list)

    context = {'user_lists': user_lists, 'form': form, 'form2': form2, 'list_data': list_data}

    return render(request, 'MyApp/app.html', context)

Это сохранит все данные, которые вынужно в списке данных.Если вы воспользовались моим советом в начале ответа, вы также можете отсортировать его по created, чтобы получить хронологию.В шаблоне вы можете просмотреть этот список.Ключом является имя списка, а значением будет набор запросов записей данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...