Проблемы с использованием ManyToManyField с устаревшей базой данных

Проблема в том, что я связал таблицу (Legacy) с моделями django (UserProfile) с помощью M2MField, а также через промежуточную таблицу, но, похоже, связь не сгенерирована. Устаревшая таблица — это всего лишь одна таблица без каких-либо других отношений.

Я использую дистрибутив Anaconda с Python версии 2.7, django 1.8 и PostgreSQL 9.4. Вот коды.

models.py

from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User

class Legacy(models.Model): # Legacy DB with no pk column
    ... # columns
    class Meta:
        managed = False
        db_table = 'legacydb_name'

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    username = models.CharField(max_length = 16)

    mylegacy = models.ManyToManyField(Legacy,
                                      through = 'Legacylink',
                                      related_name = 'legacy_mylegacy')
    def __unicode__(self):
        return "%s"%(self.user, )

class Legacylink(models.Model):
    userprofile = models.ForeignKey(UserProfile)
    yourlegacy = models.ForeignKey(Legacy)

    class Meta:
        db_table = 'legacy_link'
        unique_together = ('userprofile','yourlegacy')

admin.py

from django.contrib import admin
from myapp.models import UserProfile, Legacy, Legacylink

# Register your models here.
admin.site.register(UserProfile)
admin.site.register(Legacy)
admin.site.register(Legacylink)

После миграции без ошибок сгенерированная таблица UserProfile не показывает связи между UserProfile и Legacy DB. Я имею в виду, что в таблице UserProfile нет ни столбца с именем my legacy, ни таблицы с именем Legacylink.

Я много гуглил о том, как использовать ManyToManyField с устаревшей базой данных... Также я очень благодарен SO за предоставление многих подсказок, таких как unique_together, о ProgrammingError, промежуточная таблица. Я следил за многими руководствами, но не смог решить свою проблему...

Вот что я спрашиваю:

  1. Должна ли устаревшая БД иметь столбец идентификатора для primary_key?
  2. Как проверить, успешно ли создано отношение M2M?

Также я был бы признателен, если бы вы сообщили мне некоторые рекомендации по работе с устаревшей БД с помощью M2MField.


person Leonard2    schedule 03.09.2015    source источник
comment
Я не совсем уверен, что вы ожидаете здесь. Отношения многие ко многим не существуют как физические поля; таблица legacy_link будет содержать все данные об отношениях.   -  person Daniel Roseman    schedule 03.09.2015
comment
@daniel Кажется, да. Когда я пробую поле m2m на простейшем примере без устаревшей БД, оно работает хорошо... также дополнительно используя промежуточную таблицу, django не генерирует промежуточную таблицу автоматически, как в случае с использованием устаревшей БД. Я новичок в django, а также в веб-программировании, поэтому, думаю, мне нужно больше учиться. Спасибо за комментарий.   -  person Leonard2    schedule 04.09.2015