Так скажем, у меня есть модель под названием Card
:Джанго Лучший способ использовать View как ListView
models.py
class Card(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=10, blank=True)
и теперь давайте скажем я вид:
просмотры. ру
class CardView(View):
def get(self, request, *args, **kwargs):
cards = Card.objects.filter(user=request.user)
return render(request, 'index.html', {'cards': cards})
Мой вопрос заключается в следующем: Как я могу реорганизовать CardView
так что я могу абстрагировать фильтрацию Карт в Суперкласс, который можно унаследовать? В ListView я знаю, что могу просто создать еще один класс, который наследует от object
, переопределить get_context_data
, а затем называть его так: class CardListView(CardObjectsMixin, ListView)
, но можно ли сделать то же самое с общим классом View
?
Я должен быть более понятным - после того, что вы опубликовали, существует способ слияния контекстов из унаследованного 'get()' с подклассовым 'get()'? – Hybrid
@Hybrid Я отредактировал ответ. – Gocht
Хорошо, но вы видите, что проблема заключается в том, что я фильтрую «Пользователь», поэтому невозможно добавить эквивалент ('state') в качестве поля класса (так как' request.user' не существует на уровне класса). – Hybrid