小编jun*_*lor的帖子

Django admin inline:select_related

在Python 3.4.1上使用带有模型的Django 1.8:

class Product(models.Model):
    name = models.CharField(max_length=255)
    # some more fields here

    def __str__(self):
        return self.name


class PricedProduct(models.Model):
    product = models.ForeignKey(Product, related_name='prices')
    # some more fields here

    def __str__(self):
        return str(self.product)

class Coming(models.Model):
    # some unimportant fields here


class ComingProducts(models.Model):
    coming = models.ForeignKey(Coming)
    priced_product = models.ForeignKey(PricedProduct)
    # more unimportant fields
Run Code Online (Sandbox Code Playgroud)

和以下admin.py:

class ComingProductsInline(ForeignKeyCacheMixin, admin.TabularInline):
    model = ComingProducts


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

当然,我遇到了对数据库进行多次查询的问题:我对列表中的每个项目进行查询,并对每一行进行查询.所以,有100个项目,我得到100 ^ 2个查询.我已经用Django表单中的ModelChoiceField或ModelMultipleChoiceField的缓存查询集选项解决了每行查询的问题 但是我仍然遇到str方法的问题.我尝试过以下方法:

1)将prefetch_related添加到ComingAdmin:

def get_queryset(self, request):
    return super(ComingAdmin, self).get_queryset(request). …
Run Code Online (Sandbox Code Playgroud)

python django admin foreign-keys django-queryset

10
推荐指数
4
解决办法
6734
查看次数

标签 统计

admin ×1

django ×1

django-queryset ×1

foreign-keys ×1

python ×1