Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2014 17:21:48

Wojaovlad
От: Минск
Зарегистрирован: 2014-04-16
Сообщения: 12
Репутация: +  0  -
Профиль   Адрес электронной почты  

Django + mysql + связь многое ко многим + вывод значений

scopichol
Куда еще подталкивать? Я вроде все написалТОлько что заметил опечатку. Многие ко многим не нужно

Либо не понимаем друг друга, либо я дурак. Без дополнительной табоицы я не могу, так как она уже есть. У меня есть база, в которой две таблицы (производители и модели) связаны третьей (replication) и мне теперь надо из этой базы вывести сначала производителей всех, а потом при нажатии на одного из них вывести все модели этого производителя.

Как я ни пытался сообразить, но ваш вариант не подходит (может я ошибаюсь), для такого типа БД.

Офлайн

#2 Ноя. 6, 2014 13:55:12

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django + mysql + связь многое ко многим + вывод значений

Тогда опубликуйте схему БД

Офлайн

#3 Ноя. 6, 2014 15:47:14

Wojaovlad
От: Минск
Зарегистрирован: 2014-04-16
Сообщения: 12
Репутация: +  0  -
Профиль   Адрес электронной почты  

Django + mysql + связь многое ко многим + вывод значений

Не знаю как сделать это визуально. Примерно так она выглядит.

Таблица_tab_manufacturer
- id
- name

Таблица_tab_model
- id
- name

Таблица_tab_replication
- id
- year
- id_manufacturer
- id_model

Тоесть по таблица с производителями связана с таблицей моделей через id в таблице replication.

Офлайн

#4 Ноя. 7, 2014 11:44:57

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django + mysql + связь многое ко многим + вывод значений

class Manufacturer(models.Model):
    name = models.CharField(max_length=50)
    carmodels = models.ManyToManyField('CarModel', through='Replication')
    
    def __unicode__(self):
        return u'%s' % self.name
        
    class Meta:
        db_table = 'tab_manufacturer'
class CarModel(models.Model):
    name = models.CharField(max_length=50)
    manufacturers = models.ManyToManyField(Manufacturer, through='Replication')
    
    def __unicode__(self):
        return u'%s' % self.name
        
    class Meta:
        db_table = 'tab_model'
        
class Replication(models.Model):
    year = models.CharField(max_length=50, db_column='year')
    carmodel = models.ForeignKey(CarModel, db_column='model_id')
    manufacturer = models.ForeignKey(Manufacturer, db_column='manufacturer_id')
    
    def __unicode__(self):
        return u'%s %s %s' % (self.carmodel.name, self.manufacturer.name, self.year)
    
    class Meta:
        db_table = 'tab_replication'

И тогда в детайлз
item =  Manufacturers.objects.filter(pk=id)
entries = item.carmodels.all()
Или если нужны репликации
entries = item.replication_set.all()

Отредактировано scopichol (Ноя. 7, 2014 11:45:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version