David-S-IT / yadjango

Образовательный проект по Django от Интенсивы Академии Яндекса
1 stars 1 forks source link

Оптимизировать использование related_name #34

Closed drowsycoder closed 1 year ago

drowsycoder commented 1 year ago

Вот это говорит о том, что в документацию не смотрел, из-за чего и понимания этой штуки нет:

class Item(CategoryBase):
    category = models.ForeignKey(
        <...>
        related_name='category',
        <...>
    )
    tags = models.ManyToManyField(
        <...>
        related_name='tags',
        <...>
    )

Так-то related_name у нас для красоты обращения к связанным моделям используется, чтобы потом обратиться к товарам категории, например, не через category.item_set, а через более человечное category.items (что и при выборе ему названия стоит учитывать, перепроверь у себя везде) https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.ForeignKey.related_name https://docs.djangoproject.com/en/3.2/ref/models/options/#default-related-name

И, кстати, related_name вообще стоит переместить в default_related_name в Meta, начиная с того же Item.

Сразу скажу: к абстрактному классу мы не обращаемся, и вообще сейчас предполагали бы по логике вещей обращаться только к items (принадлежащим к какой-то категории или тегу) и tags (для какого-то item'а)

drowsycoder commented 1 year ago

А ещё default_related_name для Tag, я об этом в самом конце упоминал У нас связь m2m, мы можем захотеть обращаться к набору тегов для конкретного Item`а