Уведомления

Группа в Telegram: @pythonsu

#1 Март 23, 2012 03:57:46

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько связей в модели.

Есть две модели, модель книг, и модель глав книги, т.е. у одной книги может существовать несколько глав и один автор условно они выглядят так:

class Book(models.Model):
book_author = models.ForeignKey(User, verbose_name='Автор')
book_title = models.CharField(max_length=255, verbose_name='Название книги')

class Chapter(models.Model):
book_title = models.ForeignKey(Book, verbose_name='Название книги')
Нужно сделать выборку глав, где была указанна не только книга родитель, но и какому юзеру она принадлежит, на основании названия книги.
Скорей всего нужно добавить “book_author” в таблицу глав, но загвоздка в том, что автор должен автоматом выбираться на основе книги, а такой вариант не работает:

class Book(models.Model):
book_author = models.ForeignKey(User, verbose_name='Автор')
book_title = models.CharField(max_length=255, verbose_name='Название книги')

class Chapter(models.Model):
book_title = models.ForeignKey(Book, verbose_name='Название книги')
book_author = models.ForeignKey(Book, db_column="book_author", verbose_name='Автор')
Подскажите как это организовать.

P.S.: надеюсь я понятно описал суть.



Офлайн

#2 Март 23, 2012 04:09:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Несколько связей в модели.

class Book(models.Model):
book_author = models.ForeignKey(User, verbose_name='Автор')
book_title = models.CharField(max_length=255, verbose_name='Название книги')

class Chapter(models.Model):
book = models.ForeignKey(Book, verbose_name='Название книги')


chapters=Chapters.objects.filter(book__title=u'Незнайка на Луне', book__author__first_name=u'Носов', book__author__last_name=u'Николай')



Офлайн

#3 Март 23, 2012 10:06:15

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько связей в модели.

Вы хотите сказать, что поле и так есть, а я как дурак этого не знал?



Офлайн

#4 Март 23, 2012 12:47:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Несколько связей в модели.

> у одной книги может существовать несколько глав и один автор

А вы не думали о том что у одной книги могут быть несколько авторов?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Март 23, 2012 12:51:53

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько связей в модели.

Rodegast
> у одной книги может существовать несколько глав и один автор

А вы не думали о том что у одной книги могут быть несколько авторов?
У моих не могут)))

Суть в том, что мне надо составить запрос так, что бы вывести поля и из связанной записи из другой таблицы.



Отредактировано (Март 23, 2012 12:59:48)

Офлайн

#6 Март 25, 2012 01:30:26

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько связей в модели.

Пока решил сделать обычные поля, которые будут саполнятся при дополнении, а не зависеть напрямую, как хотелось бы мне.



Офлайн

#7 Март 25, 2012 19:46:50

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько связей в модели.

Всё я нашёл решение… надо сделать что то вроде:

class Book(models.Model):
book_author = models.ForeignKey(User, verbose_name='Автор')
book_title = models.CharField(max_length=255, verbose_name='Название книги')

class Chapter(models.Model):
book_title = models.ForeignKey(Book, verbose_name='Название книги')

book = Book.objects.get()
chapter = book.chapter_set.all()

Т.е. через обратную связь, танцую ат гланой модели.



Отредактировано Atterratio (Март 25, 2012 19:48:10)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version