Pergunta

A minha pergunta segundo não tão adepto do dia: Eu tenho um projeto Django com quatro aplicativos instalados. Quando eu executo syndb manage.py, ele só cria tabelas para dois deles. A meu conhecimento, não há problemas em qualquer dos meus arquivos de modelos, e todos os aplicativos são especificados no INSTALLED_APPS no meu arquivo de configurações. syndb Manage.py apenas parece ignorar dois dos meus apps.

Uma coisa que é único sobre os dois aplicativos "ignorados" é que os arquivos modelos importar modelos de outros dois aplicativos e usá-los como chaves estrangeiras (não sei se isso é bom / mau prática, mas me ajuda a estadia organizado). Eu não acho que esse é o problema, porém, porque eu comentei os modelos com chaves estrangeiras e as tabelas ainda não foram criadas. Estou perplexo.

UPDATE: Quando eu comente as linhas importação de arquivos modelos de outros aplicativos, syndb cria minhas tabelas. Talvez eu não estou entendendo alguma coisa sobre como modelos de arquivos em aplicativos separados relacionar com outra outra. I embora era ok usar um modelo de outro aplicativo como uma chave estrangeira, basta importá-lo. Não é verdade?

Foi útil?

Solução

Infelizmente, manage.py silenciosamente falha ao carregar um aplicativo onde há um erro de importação em seu models.py ( ticket # 10706 ). As chances são de que há um erro de digitação em um dos seus arquivos models.py ... verificar todas as instruções de importação de perto (ou o uso pylint).

Recentemente syncdb parou de carregar um par de meus apps, e sqlall me deu o erro "App com foo rótulo não pôde ser encontrado". Não sabendo que isso às vezes significa "App com foo rótulo foi encontrado, mas não pôde ser carregado devido a ImportError sendo levantadas", ele me levou meia hora para perceber que eu estava tentando importação 'haslib' em vez de 'hashlib' em um dos meus arquivos models.py.

Outras dicas

Eu acho que eu corri em toda algo semelhante.

Eu tive um problema onde um modelo não estava a ser reposto. Neste caso, verificou-se que houve um erro em meus modelos que não estava sendo cuspir.

Embora eu acho syncdb, quando executado, cuspir algum tipo de erro.

Em qualquer caso tente importar o arquivo de modelos a partir do shell e veja se você pode.

$ manage.py shell
>>> from myapp import models
>>>

Se há um erro no arquivo este deve indicá-lo.

De acordo com a sua atualização, parece que você pode ter um problema de cross-importação. Em vez de:

from app1.models import X

class ModelA(models.Model):
    fk = models.ForeignKey(X)

Tente:

class ModelA(models.Model):
    fk = models.ForeignKey("app1.X")

... embora eu acho que você deve obter um erro em syncdb.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top