Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django admin+;大数据集多对多字段的自动完成_Python_Django_Django Autocomplete Light - Fatal编程技术网

Python Django admin+;大数据集多对多字段的自动完成

Python Django admin+;大数据集多对多字段的自动完成,python,django,django-autocomplete-light,Python,Django,Django Autocomplete Light,Django版本:1.7 自动完成照明版本:2.0 我有一个多对多关系:订阅应用程序,其中每个应用程序可以属于多个订阅,每个订阅可以包含多个应用程序。 订阅数量预计将达到数百个,而应用程序数量约为150万 使用Django Admin来管理订阅及其应用程序将是一件非常棒的事情,并且按照建议,使用autocomplete_light来管理大型数据集。 下面是我编写的代码,但它无法尝试一次加载AppMetadata的所有150万条记录,并挂起浏览器。 请告诉我 # model.py class Ap

Django版本:1.7
自动完成照明版本:2.0

我有一个多对多关系:订阅应用程序,其中每个应用程序可以属于多个订阅,每个订阅可以包含多个应用程序。 订阅数量预计将达到数百个,而应用程序数量约为150万

使用Django Admin来管理订阅及其应用程序将是一件非常棒的事情,并且按照建议,使用autocomplete_light来管理大型数据集。 下面是我编写的代码,但它无法尝试一次加载AppMetadata的所有150万条记录,并挂起浏览器。 请告诉我

# model.py
class AppMetadata(models.Model):
    package_key = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=500)
    package = models.CharField(max_length=400)

class Subscription(models.Model):
    name = models.CharField(max_length=256, unique=True)
    is_active = models.BooleanField('active', default=True)

class SubscriptionApp(models.Model):
    subscription_key = models.ForeignKey(to=Subscription, on_delete=models.DO_NOTHING)
    package_key = models.ManyToManyField(to=AppMetadata, db_column='package_key')





我已经想出了一个折衷的解决办法。从上面的代码中,我删除了SubscriptionAutocomplete,并重写了admin.py类,如下所示:

@admin.register(SubscriptionApp)
class SubscriptionAppAdmin(admin.ModelAdmin):
    form = autocomplete_light.modelform_factory(model=SubscriptionApp)

class SubscriptionAppInline(admin.TabularInline):
    model = SubscriptionApp

@admin.register(Subscription)
class SubscriptionAdmin(admin.ModelAdmin):
    model = Subscription
    ordering = ('name',)
# admin.py
class SubscriptionAppInline(admin.TabularInline):
    model = SubscriptionApp

class SubscriptionAdmin(admin.ModelAdmin):
    form = autocomplete_light.modelform_factory(model=Subscription)
    inlines = [SubscriptionAppInline]
admin.site.register(Subscription, SubscriptionAdmin)
# settings.py
INSTALLED_APPS = (
    'autocomplete_light',
    'django.contrib.admin',
    ...
...
# urls.py
urlpatterns = patterns(
    ...
    # last record
    url(r'^autocomplete/', include('autocomplete_light.urls')),
)
@admin.register(SubscriptionApp)
class SubscriptionAppAdmin(admin.ModelAdmin):
    form = autocomplete_light.modelform_factory(model=SubscriptionApp)

class SubscriptionAppInline(admin.TabularInline):
    model = SubscriptionApp

@admin.register(Subscription)
class SubscriptionAdmin(admin.ModelAdmin):
    model = Subscription
    ordering = ('name',)