来自ForeignKey select的Django Admin自动填充数据

问题描述 投票:3回答:1

我正在寻找一种基于选定字段自动填充管理员中某些字段的方法。我在Inline中有一个外键字段,并希望以表单的形式实时显示当前选定对象的一些数据。

我的代码的简化版本可以说明我在做什么:

# models.py

class Product(models.Model):
    code = models.CharField(max_length=6, default=0)
    name = models.CharField(max_length=25, null=True, blank=True)


class Provider(models.Model):
    code = models.CharField(max_length=6, default=0)
    name = models.CharField(max_length=25, null=True, blank=True)
    address = models.CharField(max_length=25, null=True, blank=True)


class ProductProvider(models.Model):
    product = models.ForeignKey(Product)
    provider = models.ForeignKey(Provider)
    cost = models.DecimalField(max_digits=6, decimal_places=2, default=0)

我的管理类如下:

# admin.py

class ProductProviderInline(admin.TabularInline):
    model = ProductProvider
    fk_name = 'product'

    fields = ('provider', 'cost', 'provider_address')
    readonly_fields = ('provider_address',)
    extra = 1

    def provider_address(self, obj):
        return obj.provider.address


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    model = Product
    list_display = ('code', 'name')
    inlines = [ProductProviderInline]


@admin.register(Provider)
class ProviderAdmin(admin.ModelAdmin):
    model = Provider

在此示例中,选择了提供者后,我想更新只读字段address,而不必立即保存对象。

[我已经尝试了大多数“自动完成”第三方应用程序,对我来说可悲,他们大多数专注于自动完成选择字段,而不是基于选择自动填充表单。

我确定这需要一些Javascript / Ajax。是否有任何第三方应用程序。涵盖了这个用例?我认为没有关于如何实现此目标的任何建议?

javascript python django django-admin autofill
1个回答
0
投票

您是否找到了解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.