小编kla*_*ern的帖子

Django管理员内联自定义查询集

我有两个型号:

class Parent:
   ...

class Child:
   parent = models.ForeignKey(Parent)
Run Code Online (Sandbox Code Playgroud)

Parent的模型管理员中,我想用自定义查询集显示Child的内联,而不仅仅是通过fk字段​​与父项相关的内联.

我试过了:

class ChildInline(admin.TabularInline):
   model = Child
   def get_queryset(self, request):
      return Child.objects.filter(<my custom filter>)

class ParentAdmin(admin.ModelAdmin):
   inlines = [ChildInline]
Run Code Online (Sandbox Code Playgroud)

但是内联中显示的唯一子项是那些满足两个过滤器的子项:与FK +我的自定义过滤器的父项相关.

是否有可能做到这一点?

编辑:

我现在看到的是BaseInlineFormSet正在过滤我创建的查询集,只保留与父项相关的子项,任何想法如何避免这种情况?

django/forms/models.py

class BaseInlineFormSet(BaseModelFormSet):
    ...
    if self.instance.pk is not None:
       qs = queryset.filter(**{self.fk.name: self.instance})
    ...
Run Code Online (Sandbox Code Playgroud)

django

9
推荐指数
2
解决办法
4187
查看次数

Postgis不是可用的数据库后端

在工作的django 1.9应用程序中设置geodjango时我遇到了这个错误.

我的应用程序生活在亚马逊EC2实例和RDS postgres实例中.

错误是:

django.core.exceptions.ImproperlyConfigured: 'django.contrib.gis.db.backends.postgis' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'postgresql', 'sqlite3
Run Code Online (Sandbox Code Playgroud)

我做了什么:

  • 按照geodjango doc中的说明安装GEOS,PROJ.4和PostGIS .
  • 按照amazon doc中的说明在亚马逊RDS中安装PostGIS .
  • 修改我的项目settings.py以包括:

    • INSTALLED_APPS =(...'django.contrib.admin',...'django.contrib.gis')
    • GEOS_LIBRARY_PATH ='/ usr/local/lib/libgeos_c.so'
    • DATABASES = {...'ENGINE':'django.contrib.gis.db.backends.postgis'...}
  • 修改我的app models.py以从django.contrib.gis.db导入模型,而不是django.db

有什么猜测我错过了吗?

django postgresql geodjango

5
推荐指数
2
解决办法
4817
查看次数

从现有基础对象(非派生)创建新的派生对象

假设django中有以下类结构:

class Base(models.Model)
class Derived(Base)
Run Code Online (Sandbox Code Playgroud)

这个基础对象(只是Base,而不是Derived

b = Base()
b.save()
Run Code Online (Sandbox Code Playgroud)

我想从 b 创建一个派生对象。哪种方法是正确的?我试过了:

d = Derived(b)
d = Derived(base_ptr=b)
Run Code Online (Sandbox Code Playgroud)

谢谢

注意:我认为这是一个与“如何在 Django 中从模型基类转到派生类? ”不同的问题,因为我需要的是从现有基(且仅基)对象创建一个新的派生对象。在该问题中,它检查派生类是否已存在,然后返回它。就我而言,派生对象不存在。

django

4
推荐指数
1
解决办法
846
查看次数

标签 统计

django ×3

geodjango ×1

postgresql ×1