Найти - Пользователи
Полная версия: Как сопоставить id в модели?
Начало » Django » Как сопоставить id в модели?
1 2 3
Kotakota
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
pal201
Благодарю Вас за развернутый ответ и помощь. читать и читать еще надо мануал….
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
Если вам не принципиально важно вносить данные програмно, то
первое что приходит на ум - подключите свои модели к админке и заполняйте через нее.
А еще не понятно какие проблемы у вас с моделью Author, ведь в ней нет ни вторичного ключа ни ManyToManyField.
В Django новичок, поэтому прошу прощения если что не так)
Kotakota
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. Приведите примеры Вашего кода и ошибок которые появляются.
Rodegast
> возникает сообщение об ошибке

1) Сообщение в студию!
2) Проверяй схему БД. Там должно быть таблица связи: приложение_book_author с полями book_id, author_id.
pal201
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.
Направьте на путь истинный.
Спасибо
Rodegast
> а вот для Book и Author не получается сделать аналогично. если я указываю publisher=('name из модели Publisher)

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

publisher=Publisher.objects.get(name = "Имя Издателя")
Почитал документацию, но раздела объясняющего добавление записи в соотношение многие ко многим не нашел. Возможно, плохо искал?
Благодарю, это прояснилось.
Но теперь та же загвоздка с авторами.
И потом еще один момент, если мы не используем id, значит придется перечислять все поля для выборки уникальной записи из таблицы, ведь в противном случае Издателей может быть много с одинаковым именем, а вот адреса могут различаться. Ведь так?
pal201
Все же надеюсь на помощь Гуру. Как правильно добавлять записи в таблицы с соотношением “Многие ко многим”.
Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB