2016-04-29 18 views
0

データベース内の静的ファイルを参照するアプリケーションを作成しています。フレキシビリティのために、私は戻ってBASE_DIRに基づいて相対的なモデルを作っています。モデルのsettings.pyから変数を呼び出す際の問題

from django.db import models 
from django.conf import settings 

class agency(models.Model): 
    agency_name = models.CharField(max_length=200) 
    agency_flag = models.FilePathField(
     path=settings.BASE_DIR+"program/static/flags") 
    agency_bio = models.CharField(max_length=10000) 
    agency_color = models.CharField(max_length=20, default='red') 
    time = models.IntegerField(default=0) 

    def __str__(self): 
     return self.agency_name 

    class Meta: 
     verbose_name_plural = "Agencies" 

変数が一度しか呼び出されない限り、それはうまく動作します。しかし、完全に同一のsettings.BASE_DIRを使用したにもかかわらずsettings.BASE_DIR

class programs(models.Model): 
    code = models.CharField(max_length=3) 
    name = models.CharField(max_length=50) 
    description = models.CharField(max_length=500) 
    image = models.FilePathField(
     path=settings.BASE_DIR+"program/static/programs") 

    def __str__(self): 
     return self.code 

    class Meta: 
     verbose_name_plural = "Programs" 

class shiptypes(models.Model): 
    name = models.CharField(max_length=200) 
    desc = models.CharField(max_length=500) 
    color = models.CharField(max_length=6, default='000000') 
    image = models.FilePathField(
     path=settings.BASE_DIR+"program/static/shiptypes") 

    def __str__(self): 
     return self.name 

    class Meta: 
     verbose_name_plural = "Ship Types" 

を呼び出す必要が2つの以上のモデルがありますが、Djangoはエラー「タイプのオブジェクトの設定」をスロー全てが、第一の基準には属性 『BASE_DIR』がありませんもし私が行って設定を取り除くならば、プログラムやshiptypesのBASE_DIRは問題なく動作しますが、本当に明白なことがあるようですが、私はそれを見ることができません。私はすべての耳でこれを処理するより良い方法)

+1

どのように設定をインポートしていますか? – Sayse

+0

以下の答えが瞬間的に働いた。私は現在、ビューのベースディレクトリも必要としています。同じエラーを表示しています。私が使用したコードは 'django.confのインポート設定からです ' なので、私は何が間違っているのか分かりません... – arlyon

答えて

0

BASE_DIR = settings.BASE_DIRコードの開始時にそれを代わりに使用するのですか?
は申し訳ありませんが、私は本当に問題はあなたが適用されていないdjango.conf、むしろ独自の設定モジュールよりも、あなたの設定を意味するかもしれないから輸入しているということです

+1

あなたがそうしている状況の1つは、あなたが固定に追いついてしまって、一歩前に戻って別の顔をすることはできません。どのように恥ずかしいほど簡単なhahaha。 これはうまくいきました。 – arlyon

0

私が想像...それを自分自身をテストすることはできませんときに必要なのは自分のモジュールからインポートするだけです

from my_app import settings 
関連する問題