我是django的新手,并试图将一个外键带回给受让人和记者的用户.但是,当我尝试将更改应用于南方时,我得到了错误
ValueError: The database backend does not accept 0 as a value for AutoField.
Run Code Online (Sandbox Code Playgroud)
我的型号代码:
class Ticket(models.Model):
title = models.CharField(max_length=80)
text = models.TextField(blank=True)
prioritys = models.ForeignKey(Prioritys)
ticket_created = models.DateTimeField(auto_now_add=True)
ticket_updated = models.DateTimeField(auto_now=True)
assignee = models.ForeignKey(User, null=True, related_name='assignee')
reporter = models.ForeignKey(User, null=True, related_name='reporter')
def escaped_text(self):
return markdown.markdown(self.text)
def __unicode__(self):
return self.text
Run Code Online (Sandbox Code Playgroud) 我希望能够使用Slick从一个非常大的表中获取所有记录.如果我试图通过foreach,for或list fetching来做到这一点; 我得到了一个Out of Memory Exception.
有没有办法使用Slick或延迟加载的"游标",只在需要时获取对象减少使用的内存量?
我的admin.py中有以下代码:
class UserManagedGroupAdmin(admin.ModelAdmin):
inlines = [MembershipInline]
search_fields = ('name', 'leader__username', )
list_display = ('__unicode__', 'leader', )
filter_horizontal = ('permissions', )
raw_id_fields = ('leader', )
admin.site.register(UserManagedGroup, UserManagedGroupAdmin)
Run Code Online (Sandbox Code Playgroud)
用于搜索的放大镜图标未显示在管理页面中.
这就是我得到的:
正如您所看到的那样,它显示的是模型的unicode方法,而不是我想要的搜索图标.
现场'leader'
是一ForeignKey
对User
.
难道说Django的禁用搜索ForeignKeys
到User
出于安全原因,还是我做错了什么?
小部件非常适合选择用户...我的意思是,我不能在我的网站的每个用户那里留下一个巨大的选择.
谢谢.
我在具有 GeoDjango 的默认 SRID、WGS84 的 Postgis 数据库中有几何图形,并且发现直接以度为单位的查找比以公里为单位要快得多,因为数据库可以跳过我认为的投影。
基本上,Place.objects.filter(location__distance__lte=(point, D(km=10)))
比Place.objects.filter(location__dwithin=(point, 10))
第一个查询产生表的完整扫描慢几个数量级。但有时我需要查找以公里为单位的距离阈值的地方。
是否有某种精确的方法将 10 公里转换为查询的度数?也许我应该使用另一个具有相同性能的等效查找?
为什么以及如何像这样工作?
item = db.test.find_one()
result = db.test.replace_one(item, item)
print(result.raw_result)
# Gives: {u'n': 1, u'nModified': 1, u'ok': 1, 'updatedExisting': True}
print(result.modified_count)
# Gives 1
Run Code Online (Sandbox Code Playgroud)
当 mongodb shell 中的等效项始终为 0 时
item = db.test.findOne()
db.test.replaceOne(item, item)
# Gives: {"acknowledged" : true, "matchedCount" : 1.0, "modifiedCount" : 0.0}
Run Code Online (Sandbox Code Playgroud)
如何获得一致的结果并正确检测替换何时实际更改数据?
我正在开发一个应用程序,允许用户自己创建和管理用户组.
问题是我想存储哪个用户向任何组添加了新成员.
这些是我目前的模特:
class UserManagedGroup(Group):
leader = models.ForeignKey(User, verbose_name=_('group leader'), related_name='leaded_groups')
members = models.ManyToManyField(User, verbose_name=_('members'), through='Membership',
related_name='managed_groups')
class Membership(models.Model):
user = models.ForeignKey(User, related_name='memberships')
group = models.ForeignKey(UserManagedGroup, related_name='memberships')
info = models.OneToOneField('MembershipInfo', verbose_name=_('membership information'))
class Meta:
unique_together = ['user', 'group']
class MembershipInfo(models.Model):
date_added = models.DateField(_('date added'), auto_now_add=True)
made_member_by = models.ForeignKey(User, verbose_name=_('user who made him a member'))
membership_justification = models.TextField(_('membership justification'), blank=True, default='')
@receiver(signals.post_delete, sender=Membership)
def delete_membership_info(sender, instance, *args, **kwargs):
if instance.info.pk:
instance.info.delete()
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我有一个愚蠢的MembershipInfo
模型,Membership
由于其领域的性质,它更适合合并.此外,MembershipInfo
s生命受其约束Membership
(这就是为什么我必须创建这个post_delete信号连接).
由于这个原因,我无法合并它们: …
我来自会话文档,试图找出会话对敏感数据的安全性.
我想缓存远程连接,更具体地说是SSH连接.
文档提到了泡菜的一些安全问题,但这不是我正在寻找的.
会话是否会以纯文本形式存储SSH身份验证数据(无论是在数据库,文件还是在任何地方)?
我有一个django模型,需要参考自定义用户模型进行一些处理。
在类加载时,我无法使用此模型的类,因为类的加载顺序是未知的。
因此,我需要在运行时添加一些类属性,此刻,我需要将它们添加到中__init__
或__new__
类似的地方:
def __new__(cls, *args, **kwargs):
# hack to avoid INSTALLED_APPS initialization conflicts.
# get_user_model() can't be called from this module at class loading time,
# so some class attributes must be added later.
# Metaclasses could me more appropiate but I don't want to override
# dango's metaclasses.
if not hasattr(cls, '_reverse_field_name_to_user'):
cls._find_reverse_field_name_to_user()
return Group.__new__(cls, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是看起来很可怕,所以我考虑过@lazyclassproperty
对这些属性使用类似的东西。
我已经发现了几个@classproperty
和@lazyproperty
装修而不是一个两个,我不知道如何写一个自己。
问题:如何编码这样的装饰器?或建议另一种更清洁的方法替代我目前的愚蠢实施。
django ×6
python ×3
decorator ×1
django-admin ×1
django-south ×1
foreign-keys ×1
geodjango ×1
geolocation ×1
gis ×1
mongodb ×1
postgis ×1
pymongo ×1
scala ×1
session ×1
slick ×1