InlineFormSet与不同模型的queryset

时间:2009-08-12 22:19:31

标签: python django forms django-admin django-forms

我们要做的是使用不同模型的某个查询集填充带有初始值的内联表单列表。我们有产品,指标(某些类别或类型或评级)和评级,它存储实际评级并将指标与产品联系起来。

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.IntegerField(max_length=6)

class Metric(models.Model):
    name = models.CharField(max_length=80)
    description = models.TextField()


class Rating(models.Model)
    rating = models.IntegerField(max_length=3)

    metric = models.ForeignKey(Metric)
    product = models.ForeignKey(Product)

我们要做的最终结果是产品管理页面上产品的所有可能评级列表。如果我们的数据库中有20个度量标准,当我们转到产品页面时,我们希望在页面上看到20个评级表单,每个表单都绑定到不同的度量标准。我们无法使用基于评级的查询集来填充页面,因为特定产品/度量标准组合的评级可能尚不存在。

我们一直在查看Django中的所有表单和formset代码,并且希望能够提出一个简单的解决方案:

http://www.thenestedfloat.com/articles/limiting-inline-admin-objects-in-django

他只是覆盖BaseInlineFormSet中的某些内容并将其提供给内联。也许我们可以做出像

这样的事情
class RatingInlineFormset(BaseInlineFormset):

有一些改写。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您在寻找管理员或前端解决方案吗?管理方式如下,您可以对其进行反向工程以获得类似的前端解决方案:

# admin.py

class RatingInline(admin.StackedInline):
    model = Rating

class ProductAdmin(admin.ModelAdmin):
    inlines = [ 
        RatingInline
    ]

class MetricAdmin(admin.ModelAdmin):
    pass

class RatingAdmin(admin.ModelAdmin):
    pass

admin.site.register(Product, ProductAdmin)
admin.site.register(Metric, MetricAdmin)
admin.site.register(Rating, RatingAdmin)