Взаимное расположение таблиц и связь manytomany - Python

Узнай цену своей работы

Формулировка задачи:

Итак есть необходимость в админке реализовать возможность добавление многие ко многим. База у меня уже была готовая (Постгре) Модели:
Из-за взаимосвязей с другими таблицами и друг другом никак не удается их расположить так, что бы все работало - все время django не видит какое-то модели.... Может я что-то не так делаю, добавил лишних полей? sensors_id и link_id - мои поля, которые я добавил в модели что бы реализовать many-to-many...

Решение задачи: «Взаимное расположение таблиц и связь manytomany»

textual
Листинг программы
class DimSensor(models.Model):
    sensid = models.CharField(primary_key=True, max_length=64)
    sensor_type_sid = models.ForeignKey('DirSensorType', db_column = 'sensor_type_sid')
    link_id = models.ManyToManyField('LinkRoomBedLink', through='LinkSensorRoomLink', through_fields=('sensid','room_bed_link_sid'), blank=True, null=True)
    def __unicode__(self):
        return self.sensid
    class Meta:
        managed = False
        db_table = 'dim_sensor'
        verbose_name_plural = "Список датчиков"   
 
class LinkRoomBedLink(models.Model):
    room_bed_link_sid = models.IntegerField(primary_key=True)
    lpu_id = models.ForeignKey('DirLpu', db_column = 'lpu_id', blank=True, null=True)
    dep_sid = models.ForeignKey('DirDep', db_column = 'dep_sid', blank=True, null=True)
    sensors_id = models.ManyToManyField('DimSensor', through='LinkSensorRoomLink', through_fields=('room_bed_link_sid', 'sensid'), blank=True, null=True)
    room_num = models.CharField(max_length=64, blank=True, null=True)
    bed_num = models.CharField(max_length=64, blank=True, null=True)
    sysdate = models.DateTimeField(blank=True, null=True)
    def __unicode__(self):
        return self.bed_num
    class Meta:
        managed = False
        db_table = 'link_room_bed_link'
        verbose_name_plural = "Палаты и койки"
 
class LinkSensorRoomLink(models.Model):
    sensor_room_link_sid = models.IntegerField(primary_key=True)
    room_bed_link_sid = models.ForeignKey('LinkRoomBedLink', db_column = 'room_bed_link_sid')
    sensid = models.ForeignKey('DimSensor', db_column = 'sensid')
    sysdate = models.DateTimeField(blank=True, null=True)
    class Meta:
        managed = False
        db_table = 'link_sensor_room_link'
        verbose_name_plural = "Связи датчиков"

Оцени полезность:

12   голосов , оценка 4.25 из 5