2017-12-15 15 views
0

私はこれらを使用してみましたが循環djangoモデルのインポートを回避する方法は?

# user profile models file 
from ad.models import FavoriteAd 
class UserProfile(models.Model): 

    def get_user_favorite_ad(self): 
     return FavoriteAd.objects.filter(fav_user=self) 


# ad models file 
from user_profile.models import UserProfile 

class FavoriteAd(models.Model): 
    fav_user = models.ForeignKey(UserProfile, blank=False, on_delete=models.CASCADE) 

以下これらのモデルを持っているが、それはNameError UserProfile not found

# ad models files 
class FavoriteAd(models.Model): 
    fav_user = models.ForeignKey('user_profile.UserProfile', blank=False, on_delete=models.CASCADE) 

はまた、モデルの準備ができていないことを今でも、同様にこれらを試してみましたエラーを得た私に与える

# ad models files 
from django.apps import apps 
UserProfile = apps.get_model('user_profile', 'UserProfile') 
class FavoriteAd(models.Model): 
    fav_user = models.ForeignKey(UserProfile, blank=False, on_delete=models.CASCADE) 
+1

に第二版を入手するには、文字列を使用してし、正しいです。試してみたときの完全なエラーを表示してください。 –

+0

@DanielRosemanああ、2番目のバージョンの仕事はエラーです。 私は 'FavoriteAd'の上の他のモデルで' UserProfile'を使用しています。私はそれを文字列バージョンに変更しませんでした。 – mengkheang

答えて

3

FavoriteAdの中にを使用しています。あなたはFavoriteAdでそれをインポートすることができず、これは、円形のインポートを引き起こしている理由厥 UserProfileモデル

の方法。

そのユーザの好みの広告を取得するために、使用favoritead_setは、related objects

# remove that import as well 
# from ad.models import FavoriteAd 

class UserProfile(models.Model): 

    def get_user_favorite_ad(self): 
     return self.favoritead_set.all() 
+0

'UserProfile'クラスの' FavoriteAd'クラスを道路下に置く必要があるかもしれません – mengkheang

+0

UserProfileモデルファイルのインポートをコメントアウトする必要があります。私のアップデートを確認してください。 – Satendra

+0

また、Favoriteを使う条件がある場合は、UserProfileに追加してくださいそのためにマネージャクラスを使用しますが、私はあなたがそれを必要とは思わないと思います。 – Satendra

関連する問題