Найти - Пользователи
Полная версия: Как связать таблицы?
Начало » Django » Как связать таблицы?
1
helm2004
Доброго времени суток %Юзернейм%!
У меня есть две таблицы:
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



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

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

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

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

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

Я тут по неопытности народу тоже советовал форин кеями всё покрыть на уровне модели.
А потом посмотрел, что в рантайме творится и чуть не поседел.
Теперь со слезами на глазах постепенно удаляю форин кеи из модели, пока сам не вкурю, что они есть гуд.
Возможно ошибаюсь.
well
Всем привет! Не подскажете, как такое реализовать:
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' - знаю, что так нельзя, просто для наглядности.
vaxXxa
думаю, это поможет http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects
well
vaxXxa
думаю, это поможет http://docs.djangoproject.com/en/dev/re … in-objects
Таким образом я смогу редактировать элементы модели Details из админки Cars, а мне нужно наоборот: иметь возможность редактировать, фильтровать элементы модели Cars в админке Details. Или я неверно понял объект InlineModelAdmin?
Александр Кошелев
well
А зачем вы пишете в эту тему? O_o
well
Daevaorn
well
А зачем вы пишете в эту тему? O_o
Суть в том, что я хочу связать таблицы в админке, потому решил не плодить темы. Если не прав - то создам тему.
Александр Кошелев
well
Если не прав - то создам тему.
Конечно не правы. Каждая тема это решение конкретной проблемы, конкретного человека. То что он назвал тему изначально очень абстрактно - это тоже не правильно.

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

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