Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 25, 2009 13:43:15

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

Как связать таблицы?

Доброго времени суток %Юзернейм%!
У меня есть две таблицы:

class Products( models.Model ):
user = models.ForeignKey(User)
parameters = models.ManyToManyField('Parameters', default='null')

class Translation( multilingual.Translation ):
title = models.CharField( max_length = 70 )
def __unicode__(self):
return str(self.id)+'_'+self.title

class Parameters( models.Model ):
class Translation( multilingual.Translation ):
title = models.CharField( max_length = 70 )
unit = models.CharField( max_length = 70 )
Есть товар и есть таблица параметров, например вес, ширина и тд и тп(связка многие-ко-многим ), мне нужно задать значения параметров, так, чтобы каждому товару соответствовали свой набор параметров и их значения.
Например:
товар “клава” есть параметр -> “количество клавиш”, значение -> 101
товар “тефон” есть параметр -> “количество клавиш”, значение -> 55



И как это всё организовать в админке.
Большое спасибо!!!

Офлайн

#2 Сен. 27, 2009 21:06:31

m3ou
От:
Зарегистрирован: 2009-07-10
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Как связать таблицы?

Я решаю это так. Делается 3 таблицы. В одной таблице
id, вид техники
В другой
id, вид техники, параметр . Вид техники - форин кей на первую таблицу
В третьей -
id, параметр, значение. Параметр - форин кей на вторую таблицу

А в админку - просто выносится банальное редактирование таблиц.

быстро и просто.
Надеюсь, поможет :)



Отредактировано (Сен. 27, 2009 21:07:49)

Офлайн

#3 Сен. 28, 2009 12:10:02

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

Как связать таблицы?

m3ou
Я решаю это так. Делается 3 таблицы. В одной таблице
id, вид техники
В другой
id, вид техники, параметр . Вид техники - форин кей на первую таблицу
В третьей -
id, параметр, значение. Параметр - форин кей на вторую таблицу

А в админку - просто выносится банальное редактирование таблиц.

быстро и просто.
Надеюсь, поможет :)
Быстро и просто в админке….
А в рабочем коде будет всё дерево по связям тянуться там где оно не надо.
Привыкать придется и программных ошибок не избежать.

Я тут по неопытности народу тоже советовал форин кеями всё покрыть на уровне модели.
А потом посмотрел, что в рантайме творится и чуть не поседел.
Теперь со слезами на глазах постепенно удаляю форин кеи из модели, пока сам не вкурю, что они есть гуд.
Возможно ошибаюсь.



Офлайн

#4 Дек. 15, 2009 17:16:42

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

Как связать таблицы?

Всем привет! Не подскажете, как такое реализовать:
models.py:

class Cars (models.Model):
car_numb = models.CharField(max_length=20, unique=True, verbose_name=u'Номер машины')
mirror_ign = models.NullBooleanField(null=True, verbose_name=u'Игнорировать наличия зеркала')
date_upd = models.DateTimeField (auto_now_add=True, verbose_name=u'Дата обновления инфы')

def __unicode__(self):
return "%s" % (self.car_numb)

class Details (models.Model):
car = models.ForeignKey(Cars, unique=True)
dr_name = models.CharField(max_length=20, verbose_name=u'Имя Водителя')
mirror = models.NullBooleanField(null=True, verbose_name = u'Наличие зеркала')
comments = models.CharField(blank=True, max_length=100, verbose_name=u'Комментарии')
date_upd = models.DateTimeField (auto_now_add=True, verbose_name=u'Дата обновления лога')
admin.py:
class DetailsAdmin(admin.ModelAdmin):
list_display = ('car', 'Cars.mirror_ign', 'dr_name', 'mirror', 'comments', 'date_upd',)
list_filter = ('Cars.mirror_ign', 'mirror',)
fieldsets = (('Основное',
{'fields': ('car',
'Cars.mirror_ign',
'dr_name',
'mirror',
'comments',)
}),)
search_fields = ['car__car_numb', 'dr_name',]


admin.site.register(Details , Details Admin)
Не знаю, как прописать поле mirror_ign из класса Cars (models.py) в элементы list_display, list_filter и fieldsets в admin.py. 'Cars.mirror_ign' - знаю, что так нельзя, просто для наглядности.



Офлайн

#5 Дек. 15, 2009 18:06:22

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Как связать таблицы?

Офлайн

#6 Дек. 15, 2009 18:14:26

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

Как связать таблицы?

vaxXxa
думаю, это поможет http://docs.djangoproject.com/en/dev/re … in-objects
Таким образом я смогу редактировать элементы модели Details из админки Cars, а мне нужно наоборот: иметь возможность редактировать, фильтровать элементы модели Cars в админке Details. Или я неверно понял объект InlineModelAdmin?



Отредактировано (Дек. 15, 2009 18:17:32)

Офлайн

#7 Дек. 15, 2009 22:05:46

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Как связать таблицы?

well
А зачем вы пишете в эту тему? O_o



Офлайн

#8 Дек. 16, 2009 09:33:45

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

Как связать таблицы?

Daevaorn
well
А зачем вы пишете в эту тему? O_o
Суть в том, что я хочу связать таблицы в админке, потому решил не плодить темы. Если не прав - то создам тему.



Офлайн

#9 Дек. 16, 2009 15:25:51

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Как связать таблицы?

well
Если не прав - то создам тему.
Конечно не правы. Каждая тема это решение конкретной проблемы, конкретного человека. То что он назвал тему изначально очень абстрактно - это тоже не правильно.

Пожалуйста, создайте новую тему с говорящим и описывающим именно вашу задачу заголовком.



Офлайн

#10 Дек. 16, 2009 18:34:37

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

Как связать таблицы?

Daevaorn
well
Если не прав - то создам тему.
Конечно не правы. Каждая тема это решение конкретной проблемы, конкретного человека. То что он назвал тему изначально очень абстрактно - это тоже не правильно.

Пожалуйста, создайте новую тему с говорящим и описывающим именно вашу задачу заголовком.
Исправился, спасибо :)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version