Найти - Пользователи
Полная версия: Django + mysql + связь многое ко многим + вывод значений
Начало » Python для экспертов » Django + mysql + связь многое ко многим + вывод значений
1 2
Wojaovlad
scopichol
Куда еще подталкивать? Я вроде все написалТОлько что заметил опечатку. Многие ко многим не нужно

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

Как я ни пытался сообразить, но ваш вариант не подходит (может я ошибаюсь), для такого типа БД.
scopichol
Тогда опубликуйте схему БД
Wojaovlad
Не знаю как сделать это визуально. Примерно так она выглядит.

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

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

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

Тоесть по таблица с производителями связана с таблицей моделей через id в таблице replication.
scopichol
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()
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