繁体   English   中英

在模型中从settings.py调用变量的问题

[英]Problems with calling variables from settings.py in models

我正在制作一个引用数据库中静态文件的应用程序。 为了灵活性起见,我回过头来根据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个需要调用设置的模型.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抛出了错误“类型对象'settings'除了第一个引用之外,所有属性都不具有'BASE_DIR'。我觉得这可能确实很明显,但我看不到。

谢谢! (同样,如果您有更好的方法来解决这个问题,我也很高兴)

如果在代码开头放置BASE_DIR = settings.BASE_DIR类的东西,然后改用它,是否可行?
抱歉,我自己无法真正进行测试...

我想问题是您是从django.conf导入的,而不是您自己的设置模块的,这可能意味着您的设置没有在需要时应用,只需从您自己的模块中导入

from my_app import settings

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM