Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Веб-разработка и фреймворки > вопрос про foreignkey в Django models


Автор: Nookie 22.9.2011, 07:04
Доброе время суток.
Допустим есть две модели:

Код

class Company(models.Model):
    name = models.CharField(max_length=250)
    ...

class Contact(models.Model):
    company = models.ForeignKey(Company)
    phone = models.CharField(max_length=100)
    ...


Делаю вот так:
Код

company = Company()
company.name = 'firma'
company.save()

contact = Contact()
contact.company = company
contact.phone = '12345679'
contact.save()


получается так что Компания(Company()) с именем(name) сохраняется 2 раза, в базе получается 2 записи... как сделать так, чтобы этого не было, не сохранялось при сохранении контакта(Contact())?

Автор: bilbobagginz 11.1.2012, 00:49
Код

company = Company()
company.name = 'firma'
company.save()

contact = Contact()
contact.company =  Company.objects.get(name='firma')
contact.phone = '12345679'
contact.save()



Добавлено через 2 минуты и 12 секунд
Цитата(Nookie @  22.9.2011,  06:04 Найти цитируемый пост)
получается так что Компания(Company()) с именем(name) сохраняется 2 раза, в базе получается 2 записи

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

Автор: Ch0bits 8.5.2012, 14:08
Цитата(Nookie @  22.9.2011,  07:04 Найти цитируемый пост)
получается так что Компания(Company()) с именем(name) сохраняется 2 раза, в базе получается 2 записи... как сделать так, чтобы этого не было, не сохранялось при сохранении контакта(Contact())? 

Что за бред? 1 раз сохраняется компания и 1 раз контракт! Как ты определил что 2 раза?

bilbobagginz, твой код ничем не отличается, кроме того что get делает лишний запрос в БД.

Автор: bilbobagginz 9.6.2012, 23:58
Цитата(Ch0bits @  8.5.2012,  13:08 Найти цитируемый пост)
bilbobagginz, твой код ничем не отличается, кроме того что get делает лишний запрос в БД.

угу. смотрю на это сейчас и диву даюсь.

Автор: gomer999999999 3.2.2013, 23:44
Добрый день.
Предлагаем к рассмотрению и тестированию наш проект - Маркетер Плагин.
Продвигаем его успешно во всем мире. Но только 27 января 2013 предоставили в Рунете к тестированию русифицированный плагин с русифицированным интерфейсом. Вся подробная информация наhttp://www.marketerplugin.ru/ 
Предлагаем протестировать наш плагин на только что русифицированном интерфейсеhttp://www.marketerplugin.ru/test_plagina.
В двух словах: плагин предназначен для создания сайтов-визиток и страниц продаж.
Ждем ваших комментариев, отзывов и критики.
Так же будем рады видеть вас на наших страницах в соц сетях
http://www.facebook.com/pages/Marketer-plugin/5288148..
http://vk.com/club46912629
Успехов и новых впечатлений.
С уважением, Богдан

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)