Фильтр набора данных на основе входа в учетную запись

Я пытаюсь отфильтровать набор данных, отображаемый в моей таблице, на основе пользователя, который вошел в систему на предыдущей странице. Мое приложение настроено таким образом, что это простой экран входа в систему, где вы вводите имя пользователя и пароль, а затем есть один набор данных, содержащий два экрана: 1 = Неделя, 2 = Выборы. На первом экране вы выбираете, для какой недели вы хотите выбрать пикчеры, и после нажатия на неделю вы можете изменить свои пикчеры.

Когда я создавал приложения в различных решениях, моей идеей было хранить имя пользователя или неделю в качестве переменной, а затем фильтровать набор данных только на записи, относящиеся к этому критерию, но я не уверен, как это сделать в Django. Какие есть мысли?

У меня есть следующий код:

views.py

class PickList(LoginRequiredMixin, CoreListView):
    model = Pick

def user_picks(request):
    Pick.objects.filter(submitter={{ request.user.get_full_name|default:request.user }})
    return render(request, 'app/pick_list.html', {'Pick': Pick})

app urls.py

urlpatterns = [
    path('', home, name='home'),

    path('picks/', PickList.as_view(), name='pick-list'),
    path('pick/<int:pk>/', PickDetail.as_view(), name='pick-detail'),
    path('picks/<str:submitter>', user_picks(), name='pick-list'),

    path('weeks/', WeekList.as_view(), name='week-list'),
    path('weeks/<int:pk>/', WeekDetail.as_view(), name='week-detail'),
]

account urls.py

urlpatterns = [
    path('login/', views.LoginView.as_view(template_name='account/signin.html',
                                           authentication_form=AuthenticationForm,
                                           extra_context={
                                               'title': 'Login',
                                               'extra_title': 'Please sign in',
                                           }), name='login'),
    path('logout/', views.LogoutView.as_view(next_page='account:login'), name='logout'),
]

models.py

class Pick(models.Model):

    submitter = models.CharField(max_length=50, verbose_name='Submitter', null=True, blank=True)
    week = models.CharField(max_length=50, verbose_name='Week', null=True, blank=True)
    name = models.CharField(max_length=50, verbose_name='Name', null=True, blank=True)
    photo = models.ImageField(upload_to="media", max_length=500, verbose_name='Photo', null=True, blank=True)
    rank = OrderField(verbose_name='Rank', null=True, blank=True)

    def __str__(self):
        return self.name

    def get_fields(self):
        return [(field.verbose_name, field.value_from_object(self)) for field in self.__class__._meta.fields]
    
    def get_absolute_url(self):
        return reverse('app:pick-update', kwargs={'pk': self.pk})

    class Meta:
        db_table = 'pick'
        ordering = ['rank']
        verbose_name = 'Pick'
        verbose_name_plural = 'Picks'

error on urls.py:

TypeError: user_picks() missing 1 required positional argument: 'request'

В вашем файле app/urls.py:

path('picks/<str:submitter>', user_picks(), name='pick-list'),

Вы не предоставляете функцию представления, а вызываете ее. Возможно, вы захотите исправить это таким образом :

path('picks/<str:submitter>', user_picks, name='pick-list'),
Вернуться на верх