我编写了一个Python包,其中包含一个bsddb数据库,其中包含一个更耗时的计算的预计算值.为简单起见,我的安装脚本将数据库文件安装在与访问数据库的代码相同的目录中(在Unix上,类似于/usr/lib/python2.5/site-packages/mypackage/).
如何存储数据库文件的最终位置,以便我的代码可以访问它?现在,我正在使用基于__file__访问数据库的模块中的变量的hack :
dbname = os.path.join(os.path.dirname(__file__), "database.dat")
它有效,但看起来......是hackish.有一个更好的方法吗?我想让安装脚本从distutils模块中获取最终安装位置,并将其填入"dbconfig.py"文件,该文件与访问数据库的代码一起安装.
我正在尝试在django Admin中自定义多个内联,但是我无法显示底层模型的字段.
这是一个简化的例子.也许你可以告诉我如何引用它们?
这是我的模特:
class Clown(models.Model):
name = models.CharField(max_length=255)
def edit_link(self):
return ...
class Circus(models.Model):
clowns = models.ManyToManyField(Clown, blank=True, through='WorkedAt')
name = models.CharField(max_length=255)
class WorkedAt(models.Model):
clown = models.ForeignKey(Clown)
circus = models.ForeignKey(Circus)
Run Code Online (Sandbox Code Playgroud)
和我的管理员:
class ClownInline(admin.TabularInline):
model = WorkedAt
fields = ['clown__name','clown__edit_link']
class CircusAdmin(admin.ModelAdmin):
inlines = [
ClownInline,
]
exclude = ('clowns',)
Run Code Online (Sandbox Code Playgroud)
但是我收到此错误:
Unknown field(s) (clown__name) specified for WorkedAt
Run Code Online (Sandbox Code Playgroud)
(我在Django 1.6上)
更新: 为什么这不起作用.(通过模型添加计算字段.)
class Clown(models.Model):
name = models.CharField(max_length=255)
def edit_link(self):
return ...
class Circus(models.Model):
clowns = models.ManyToManyField(Clown, blank=True, through='WorkedAt')
name = models.CharField(max_length=255) …Run Code Online (Sandbox Code Playgroud) 我正在使用Google地图创建一个地理应用程序,我接收边界框作为2坐标:
我有一个PointField模型.
from django.contrib.gis.db import models
class Place(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=200)
location = models.PointField()
Run Code Online (Sandbox Code Playgroud)
我如何执行查询以获取边界框内的所有位置?
python ×2
distutils ×1
django ×1
django-1.6 ×1
django-admin ×1
django-forms ×1
geodjango ×1
postgis ×1