Size: a a a

Django [ru] #STAY HOME

2020 October 19

MS

Milena Solovyeva in Django [ru] #STAY HOME
добрый день, может кто разъяснить простыми словами вот этот синтаксис для итерации, никак не пойму, какие именно элементы задействованы

{% for review in book.reviews.all %}
<li>{{ review.review }} - {{ review.author }}</li>
{% endfor %}


моя моделька:

class Book(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
   title = models.CharField(max_length=255)
   author = models.CharField(max_length=200)
   price = models.DecimalField(max_digits=6, decimal_places=2)

   def __str__(self):
       return self.title

   def get_absolute_url(self):
       return reverse('book_detail', args=[str(self.id)])

class Review(models.Model):
   book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='reviews')
   review = models.CharField(max_length=255)
   author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)

   def __str__(self):
       return self.review
источник

MS

Milena Solovyeva in Django [ru] #STAY HOME
интересует именно
book.reviews.all


почему book на первом месте(этот
book
относиться к класcy Book или ForeignKey)

почему
reviewS
, а не
review
источник

DT

Denis Taranov in Django [ru] #STAY HOME
related_name='reviews' у модели Review
источник

DT

Denis Taranov in Django [ru] #STAY HOME
Milena Solovyeva
интересует именно
book.reviews.all


почему book на первом месте(этот
book
относиться к класcy Book или ForeignKey)

почему
reviewS
, а не
review
Если создается внешний ключ (foreignkey) и указывается related_name, то создается "обратная связь". То есть, у объекта на который ссылается внешний ключ, появляется метод reviews который вернёт RelatedObjectManager

Собственно, в этой ситуации
book = Book.objects.get()
related_reviews = book.reviews.all()   <-- тут будет итерируемый объект из объектов типа Review, у которых есть ForeignKey  к этому конкретному Book
источник

DT

Denis Taranov in Django [ru] #STAY HOME
Если бы related_name был не reviews, а jopa_lapshi, то
book.jopa_lapshi.all() делал то же самое
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Milena Solovyeva
интересует именно
book.reviews.all


почему book на первом месте(этот
book
относиться к класcy Book или ForeignKey)

почему
reviewS
, а не
review
наверное надо добавить что если бы не было related_name, то работало бы через book.review_set.all, ну и что поскольку на другой стороне не один связанный инстанс, а много и нужно это .all
источник

I

INCOGNITO | Свободен... in Django [ru] #STAY HOME
Почему не хочет ссылаться?
источник

I

INCOGNITO | Свободен... in Django [ru] #STAY HOME
источник

I

INCOGNITO | Свободен... in Django [ru] #STAY HOME
источник

DT

Dan Tyan in Django [ru] #STAY HOME
INCOGNITO | Свободен
Почему не хочет ссылаться?
через точку
источник

I

INCOGNITO | Свободен... in Django [ru] #STAY HOME
Dan Tyan
через точку
?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
два подчеркивания работает только как аргумент в orm запросе
источник

DT

Dan Tyan in Django [ru] #STAY HOME
seller.user_id
источник

I

INCOGNITO | Свободен... in Django [ru] #STAY HOME
ок, спасибо
источник

MS

Milena Solovyeva in Django [ru] #STAY HOME
Denis Taranov
related_name='reviews' у модели Review
это значение related_name задаеться автоматически?
я посмотрела, что не указывала related_name
где конкретно(расположение) этот  related_name находиться?
источник

MS

Milena Solovyeva in Django [ru] #STAY HOME
все
источник

MS

Milena Solovyeva in Django [ru] #STAY HOME
увидела; под конец дня уже мозг не варит)
источник

DT

Denis Taranov in Django [ru] #STAY HOME
Milena Solovyeva
это значение related_name задаеться автоматически?
я посмотрела, что не указывала related_name
где конкретно(расположение) этот  related_name находиться?
class Review(models.Model):
   book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='reviews')
источник

MS

Milena Solovyeva in Django [ru] #STAY HOME
спасибо !
источник

R

Raduan in Django [ru] #STAY HOME
Raduan
Как лучше всего изменить дефолтный джанговый чекбокс в форме? Хочу, чтобы каждая форма, в т.ч. админка имела мой кастомный css на чекбоксе.
Хм, я видимо что-то не так делаю:
- нашел следующие стили: https://gitbrent.github.io/bootstrap4-toggle/
- подключил их в нужном мне темплейте
- ожидаю, что все <input type=“checkbox”… >(созданные в форме через BooleanField, вот ссылка на сорсы, где показано как именно они рендерятся: 1->2->3) превратятся в тогглы, но что-то ничего не происходит

В каком моменте я не прав?)
источник