Форум сайта python.su
Хелло
Цитата с офф доки http://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward
You can override the FOO_set name by setting the related_name parameter in the ForeignKey() definition. For example, if the Entry model was altered to blog = ForeignKey(Blog, related_name='entries'), the above example code would look like this:
Понятно что этим мы перекрываем название менеджера FOO_set который возвращает все экземпляры молели по схеме бэкворд (foirgin key) на свой.
Вопрос для каких практических целей это используется так как это вроде вносит лишние имена при работе. Что в этом есть удобного ?
Спасибо
Офлайн
Пример – модель трижды завешена на User по разным причинам :
model Labyrinth(models.Model):
designer = models.ForeignKey(User, null=False, related_name='designer') # дизайнер
curator = models.ForeignKey(User, null=True, related_name='curator') # куратор
manager = models.ForeignKey(User, null=True, related_name='manager') # менеджер
Error: One or more models did not validate:
labyrinths.labyrinth: Accessor for field 'designer' clashes with related field 'User.labyrinth_set'. Add a related_name argument to the definition for 'designer'.
labyrinths.labyrinth: Accessor for field 'curator' clashes with related field 'User.labyrinth_set'. Add a related_name argument to the definition for 'curator'.
...
Офлайн
romankrvТак просто лаконичнее. Вместо уродливого User.entry_set можно например User.entries сделать.
Вопрос для каких практических целей это используется так как это вроде вносит лишние имена при работе. Что в этом есть удобного ?
Офлайн