2016-11-14 3 views
0

Перенос приложения My Access на Python/Django. Существующая база данных, поэтому использовала Inspectdb для создания моделей, которые я настраивал по мере необходимости, пока они не совпадут с фактическим db. Все модели с меткой Manage = False в Meta.Django Trouble Создание ManyToMany Field

Теперь я хочу добавить поле «много ко многим» в родительскую таблицу и иметь проблемы. Отрывки моделей:

class Federalprograms(models.Model): 
    fedpgmid = models.IntegerField(db_column='FedPgmID', primary_key=True) # Field name made lowercase. 
    fedpgmname = models.CharField(db_column='FedPgmName', max_length=50) # Field name made lowercase. 
    active = models.IntegerField(db_column='Active', blank=True, null=True, default=0) # Field name made lowercase. 
    seq = models.IntegerField(db_column='Seq', blank=True, null=True, default=0) # Field name made lowercase. 
    loanfee = models.DecimalField(db_column='LoanFee', max_digits=10, decimal_places=5, blank=True, null=True, default=0.00000) # Field name made lowercase. 

class Reports(models.Model): 
    reportname = models.CharField(db_column='ReportName', primary_key=True, max_length=50) # Field name made lowercase. 
    reporttitle = models.CharField(db_column='ReportTitle', max_length=50, blank=True, null=True) # Field name made lowercase. 
    datefielddefault = models.IntegerField(db_column='DateFieldDefault', blank=True, null=True) # Field name made lowercase. 
    startdatedefault = models.CharField(db_column='StartDateDefault', max_length=15, blank=True, null=True) # Field name made lowercase. 
    enddatedefault = models.CharField(db_column='EndDateDefault', max_length=15, blank=True, null=True) # Field name made lowercase. 
    detailsdefault = models.BooleanField(db_column='DetailsDefault', max_length=1, blank=True, null=False) # Field name made lowercase. 
    totalsdefault = models.BooleanField(db_column='TotalsDefault', max_length=1, blank=True, null=False) # Field name made lowercase. 
    askfedpgm = models.BooleanField(db_column='AskFedPgm', blank=True, null=False, default=0) # Field name made lowercase. 
    fedpgms = models.ManyToManyField('Federalprograms') 

Поэтому я добавил поле «fedpgms», а затем сделал makemigrations казавшиеся на работу, а затем сделал мигрировать, которые также казались работать. Но, джойн стол, reports_fedpgms не был создан, и когда я запустить приложение, я получаю следующее сообщение об ошибке:

ProgrammingError at /admin/fc6/reports/StatusReport/change/ 
(1146, "Table 'fc5.reports_fedpgms' doesn't exist") 

Я пытался сделать таблицу Отчетов управления = True, полагая, что это может вызвать создание присоединиться таблицы, но это только вызвало ошибку во время миграции, сказав: «Таблица отчетов уже существует».

Я как бы новичок в этом деле Django, что я делаю неправильно?

Благодаря ...

ответ

1

Изменить его

fedpgms = models.ManyToManyField(Federalprograms) 
+0

Rookie ошибка, я думаю. Это немного не по теме, но makemigrations не говорит об изменениях в приложении. Может быть связано с управлением = False в родительской модели. Должен ли я начать новый вопрос? – RMittelman

+0

@RMittelman не уверен, о чем вы говорите. Где вы пишете manage = False? –

+0

Я не вложил его, но он был введен автоматически, когда вы используете команду InspectDB для создания моделей из существующей базы данных. Поскольку база данных существует, вы не хотите создавать таблицы. Manage = False управляет этим. Он входит в класс Meta внутри каждой модели. – RMittelman