2011-06-08 31 views
5

Geçtiğimiz günlerde iki ayrı uygulamaya bölünmüştüm çünkü içinde 15'den fazla model vardı. "Dairesel ithalat hatası" aldım. Bunu yazarken çalıştı bu çözmek için:Dairesel içe aktarmadan kaçınmaya çalışın

from django.db import models 

class App1Model(models.Model): 
    app2model = models.ForeignKey(app2.App2Model) 

alıyorum hatadır: "NameError: adı 'app2' tanımlı değil". Ancak, uygulama 2, yüklü uygulamalara ve yola doğru şekilde eklenir.

project 
    -app1 
     --models.py 
    -app2 
     --models-py 

cevap

13

ForeignKey, bir bağımsız değişken olarak, yani models.ForeignKey('app2.App2Model') bir dizi sunar. Tabii ki, öncelikle herhangi bir dairesel bağımlılığı önlemek için kodunuzu tasarlamaya çalışmalısınız.

+0

ancak kodunuzda somehwere modeli gerekirse ne olur. Bir modelin bir fonksiyonuna ihtiyaç duyan yeterli fonksiyona sahibim? –

+1

@HansdeJong Dairesel ilişkiler kurmayın. Gerçekten ihtiyacınız varsa 'get_model' veya işlev düzeyinde içe aktarma kullanın. –

1

Hala bir ithalat deyimi

import app2.App2Model 

gerektiğinde Ama app2 ithalatı APP1 eğer söz gibi bir hata olacaktı.

2

ben dairesel bağımlılıkları önlemek için kod tasarlama hakkında Kedi Artı Plus ile katılıyorum, ama sen muktedir olmamalıdır:

try: 
    import app.model 
except ImportError: 
    pass 
+0

Hacky. Ama bir tutam, işe yarıyor ..! Teşekkürler – awidgery

İlgili konular