我正在尝试学习如何使用 ContentTypes 框架,但似乎无法找到我自己的应用程序。
文档有从 django.contrib.sites 导入模型的明确说明,这对我有用。然而,当我尝试替换我自己的应用程序和模型时,我没有成功。
我在 MyApp.Events.models.Event 有一个模型。我试着打电话:
i = ContentType.objects.get(app_label="Events", model="Event")
作为回应,控制台打印:
django.contrib.contenttypes.models.DoesNotExist:ContentType 匹配查询不存在。
我也试过这个,但也失败了:
i = ContentType.objects.get(app_label="events", model="event")
我'django.contrib.contenttypes'
在已安装的应用程序下列出了这个应用程序。我是否缺少另一个设置来启用此功能?
我正在尝试设置 Cloudinary 的上传小部件并将生成的 Cloudinary 对象保存到CloudinaryField()
我的模型中。Cloudinary 的示例项目仅展示了如何使用{{form}}
.
当我使用小部件上传时,我得到了一本字典,但我在文档中找不到任何地方可以让我保存它。
我正在尝试geoip2
按照说明为 GeoDjango进行设置。
出于某种原因,包装器没有导入函数。它在我下载数据库并在我的设置中指向它们之前工作,但由于某种原因现在我无法加载GeoIP2
(即使我注释掉 中的行settings.py
)。我应该如何解决这个问题?
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import geoip2
>>>
>>> from django.contrib.gis.geoip2 import GeoIP2
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: cannot import name 'GeoIP2'
>>>
Run Code Online (Sandbox Code Playgroud)
编辑:我可以看到GeoIP2
源文件中正确列出的函数(我没有修改)。什么可能阻止它加载?
我正在运行 Django 1.11.4
如果我导入django.contrib.gis.geoip2
这是它的__path__
属性:
>>> geoip2.__path__
['C:\\Users\\Adam\\Envs\\otherlane\\lib\\site-packages\\django\\contrib\\gis\\geoip2']
Run Code Online (Sandbox Code Playgroud) 有了这个功能:
timestamp = datetime.strptime(date_str, date_fmt)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ValueError:时间数据'太阳,2018年10月28日07:33:13 -0400(EDT)'与格式'%a,%d%b%Y%H:%M:%S%z(%Z)'不匹配
Sun, 28 Oct 2018 07:33:13 -0400 (EDT)
%a, %d %b %Y %H:%M:%S %z (%Z)
Run Code Online (Sandbox Code Playgroud)
我已经看了十几次,我无法弄清楚我做错了什么.
我的Python版本:
Python 3.7.0 (default, Jul 23 2018, 20:24:19)
Run Code Online (Sandbox Code Playgroud) 我在我的模型中创建并随后更改了一个 DecimalField。现在,当我尝试运行时,出现python manage.py migrate
以下错误:
decimal.InvalidOperation: quantize result has too many digits for current context
Run Code Online (Sandbox Code Playgroud)
在阅读了 SO 上的各种相关问题后,我尝试增加 max_digits,这无济于事。 我已经手动删除了我的 postgreSQL 数据库中的模型,希望能够在我迁移模型时重新创建它,但我仍然遇到同样的错误,并且无法迁移模型并在数据库中重新创建模型。
这是有问题的模型:
class Version(models.Model):
version_number = models.DecimalField(default=1.0, max_digits=3,
decimal_places=2)
Run Code Online (Sandbox Code Playgroud)
我能做些什么来解决这个问题?
编辑 当我更改 DecimalField 时,我更改了max_digits
我有以下经理:
class Totals(Manager):
def by_customer_and_date(self, start_date, end_date):
qs = self.model.objects.filter(
date__range=(start_date, end_date)
).values(
"customer"
).annotate(
...bunch of stuff...
)
return qs
Run Code Online (Sandbox Code Playgroud)
customer
与另一个对象的 FK 关系在哪里。现在,查询集打包在相关customer
对象的 ID 中,但我希望它使用显示名称,这样我就可以为我的模板很好地打包它。
现在,我已将以下内容添加到管理器中:
for q in qs:
q['customer'] = Customer.objects.get(id=q.get('customer')).name
Run Code Online (Sandbox Code Playgroud)
它工作正常,但感觉像是额外的工作......对我来说,它是 50 个数据库点击而不是一个。是否有任何快捷方式可以立即将显示名称放入 qs 字典中?