Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 21, 2011 11:14:55

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

Как сопоставить id в модели?

pal201
Вы просто маг и чародей!
заменил только это строку:
Kotakota
# URL prefix for admin media – CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/“, ”/media/".
ADMIN_MEDIA_PREFIX = ‘/media/admin/’
а вот (r'^media/(?P<path>.*)$', ‘django.views.static.serve’, {'document_root':settings.MEDIA_ROOT}), вернул на место и так же работает.

Поясните пожалуйста, теперь для панели администратора статику складывать в /media/admin/?
Менять строчку кода в urls.py было не обязательно.
У Вас именованный параметр URL, а у меня нет.
Разницы никакой за исключением обращения к параметру во вьюхе.
Складывать в /media/admin/ ничего не нужно.
Это просто префикс для админки который не должен быть равен параметру MEDIA_URL



Отредактировано (Ноя. 21, 2011 11:16:38)

Офлайн

#2 Ноя. 21, 2011 17:31:38

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сопоставить id в модели?

Благодарю Вас за развернутый ответ и помощь. читать и читать еще надо мануал….



Офлайн

#3 Ноя. 22, 2011 12:59:59

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сопоставить id в модели?

Снова обращаюсь за советом и помощью.
Продолжая изучение по книге столкнулся с проблемой добавления записи в БД где используется вторичные ключи или связь многие ко многим, а именно:
модель как в книге:
from django.db import models

class Publisher(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name

class Author(models.Model):
salutation = models.CharField(max_length=10)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
headshot = models.ImageField(upload_to='/tmp')

class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()


Для модели Publisher все данные добавились корректно.
а вот для Book и Author не получается сделать аналогично. если я указываю publisher=('name из модели Publisher), то возникает сообщение об ошибке.

Впорос: каким образом нужно правильно добавить данные?



Офлайн

#4 Ноя. 22, 2011 14:45:01

Gorazio
От:
Зарегистрирован: 2011-11-20
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сопоставить id в модели?

Если вам не принципиально важно вносить данные програмно, то
первое что приходит на ум - подключите свои модели к админке и заполняйте через нее.
А еще не понятно какие проблемы у вас с моделью Author, ведь в ней нет ни вторичного ключа ни ManyToManyField.
В Django новичок, поэтому прошу прощения если что не так)



Офлайн

#5 Ноя. 22, 2011 15:06:47

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

Как сопоставить id в модели?

pal201
Снова обращаюсь за советом и помощью.
Продолжая изучение по книге столкнулся с проблемой добавления записи в БД где используется вторичные ключи или связь многие ко многим, а именно:
модель как в книге:
from django.db import models

class Publisher(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name

class Author(models.Model):
salutation = models.CharField(max_length=10)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
headshot = models.ImageField(upload_to='/tmp')

class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()


Для модели Publisher все данные добавились корректно.
а вот для Book и Author не получается сделать аналогично. если я указываю publisher=('name из модели Publisher), то возникает сообщение об ошибке.

Впорос: каким образом нужно правильно добавить данные?
К вышесказанному Gorazio, хочу добавить:
1. Конкретизируйте задачу;
2. Приведите примеры Вашего кода и ошибок которые появляются.



Офлайн

#6 Ноя. 22, 2011 18:06:29

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

Как сопоставить id в модели?

> возникает сообщение об ошибке

1) Сообщение в студию!
2) Проверяй схему БД. Там должно быть таблица связи: приложение_book_author с полями book_id, author_id.



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

Офлайн

#7 Ноя. 22, 2011 18:17:24

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сопоставить id в модели?

Gorazio
А еще не понятно какие проблемы у вас с моделью Author, ведь в ней нет ни вторичного ключа ни ManyToManyField.
Вы совершенно правы, проблемы только с Book.

Rodegast
2) Проверяй схему БД. Там должно быть таблица связи: приложение_book_author с полями book_id, author_id.
Таблица есть.

Исправлюсь. Вопрос изложен не полностью.
так выглядит таблица publisher:

mysql> show columns from mysite_publisher;
+——-+————-+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+——-+————-+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | NO | | NULL | |
+——-+————-+——+—–+———+—————-+

book:

show columns from mysite_book;
+——————+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+——————+————–+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | | NULL | |
| publisher_id | int(11) | NO | MUL | NULL | |
| publication_date | date | NO | | NULL | |
+——————+————–+——+—–+———+—————-+

author:
show columns from mysite_author;
+————+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————–+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| salutation | varchar(10) | NO | | NULL | |
| first_name | varchar(30) | NO | | NULL | |
| last_name | varchar(40) | NO | | NULL | |
| email | varchar(75) | NO | | NULL | |
| headshot | varchar(100) | NO | | NULL | |
+————+————–+——+—–+———+—————-+

Содержимое publisher:
print Publisher.objects.all()


Содержимое author:
print Author.objects.all()



Добавляю книгу:
p=Book(title='Book',authors='Volodia', publisher='Kontora',ublication_date='121212')

Ошибка: ValueError: Cannot assign “'Kontora'”: “Book.publisher” must be a “Publisher” instance.

Если я правильно понял, нужно передать экземпляр класса Publisher.
Направьте на путь истинный.
Спасибо



Отредактировано (Ноя. 22, 2011 20:58:56)

Офлайн

#8 Ноя. 22, 2011 20:32:20

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

Как сопоставить id в модели?

> а вот для Book и Author не получается сделать аналогично. если я указываю publisher=('name из модели Publisher)

publisher=Publisher.objects.get(name = "Имя Издателя")



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

Офлайн

#9 Ноя. 22, 2011 21:08:49

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сопоставить id в модели?

Rodegast
> а вот для Book и Author не получается сделать аналогично. если я указываю publisher=('name из модели Publisher)

publisher=Publisher.objects.get(name = "Имя Издателя")
Почитал документацию, но раздела объясняющего добавление записи в соотношение многие ко многим не нашел. Возможно, плохо искал?
Благодарю, это прояснилось.
Но теперь та же загвоздка с авторами.
И потом еще один момент, если мы не используем id, значит придется перечислять все поля для выборки уникальной записи из таблицы, ведь в противном случае Издателей может быть много с одинаковым именем, а вот адреса могут различаться. Ведь так?



Отредактировано (Ноя. 23, 2011 18:56:54)

Офлайн

#10 Ноя. 24, 2011 09:35:13

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сопоставить id в модели?

Все же надеюсь на помощь Гуру. Как правильно добавлять записи в таблицы с соотношением “Многие ко многим”.
Спасибо



Отредактировано (Ноя. 24, 2011 18:07:44)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version