我正在创建一个引用数据库中静态文件的应用程序。为了灵活起见,我回过头来根据BASE_DIR制作模型。
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"
只要我只调用变量就可以了。但还有2个模型需要调用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"
尽管使用settings.BASE_DIR完全相同,但是django会抛出错误"输入对象'设置'没有属性' BASE_DIR'除了第一个参考之外的所有参考如果我去除设置.BASE_DIR在程序和shiptypes makemigrations运行没有问题。我觉得它可能是非常明显的东西,但我无法看到它。
谢谢! (如果你有一个更好的方法来解决这个问题,那我的所有耳朵都是
)答案 0 :(得分:0)
如果你在代码的开头添加BASE_DIR = settings.BASE_DIR
之类的内容然后再使用它,那么它是否有用?
对不起,我不能自己测试一下......
答案 1 :(得分:0)
我想象一下,问题是您从django.conf
而非您自己的设置模块导入,这可能意味着您的设置在您需要时尚未应用,只是从您自己的模块导入
from my_app import settings