Взаимное расположение таблиц и связь manytomany - Python
Формулировка задачи:
Итак есть необходимость в админке реализовать возможность добавление многие ко многим.
База у меня уже была готовая (Постгре)
Модели:
Из-за взаимосвязей с другими таблицами и друг другом никак не удается их расположить так, что бы все работало - все время django не видит какое-то модели....
Может я что-то не так делаю, добавил лишних полей?
sensors_id и link_id - мои поля, которые я добавил в модели что бы реализовать many-to-many...
Листинг программы
- 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 = "Связи датчиков"
Решение задачи: «Взаимное расположение таблиц и связь 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 = "Связи датчиков"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д