小编Hem*_*nth的帖子

Django:创建与管理界面类似的内联表单集

我是一个Django新手,我有一个关于在生产代码中重用管理界面的内联formset的问题.考虑以下模型:

class Attribute(models.Model):
    name       = models.CharField(max_length=50)

class Person(models.Model):
    lastName   = models.CharField(max_length=50)
    firstName  = models.CharField(max_length=50)
    email      = models.CharField(max_length=50)
    attributes = models.ManyToManyField(Attribute, through='AttributeValue')

class AttributeValue(models.Model):
    person     = models.ForeignKey(Person, on_delete=models.CASCADE)
    attribute  = models.ForeignKey(Attribute, on_delete=models.PROTECT)
    isConsumer = models.BooleanField()
    value      = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

这个管理界面出来很漂亮.我使用了以下admin.py:

class AttributeValueInline(admin.TabularInline):
    model = AttributeValue
    extra = 3

class PersonAdmin(admin.ModelAdmin):
    list_display = ('lastName', 'firstName','email')
    fieldsets = [
       ('Name',        {'fields': ['firstName', 'lastName']}),
       ('Contact Info',{'fields': ['email','phoneNumber']})
    ]
    inlines = [AttributeValueInline]

admin.site.register(Person, PersonAdmin)
admin.site.register(Attribute)
Run Code Online (Sandbox Code Playgroud)

这几乎就是我想要的.它看起来像这样: 在此输入图像描述

当我尝试在非管理员网站中实现相同的功能时,除了实际的业务逻辑之外,我还必须编写相当多的代码来执行内联表单集,表单处理.除此之外,我还遇到了这里提到的问题.

我无法将管理界面暴露给最终用户,因为我们需要一个自定义的网页设计和页面流.但是,我可以重用部分管理界面代码而不是重新实现相同的功能吗?

任何其他减少代码的建议都是最受欢迎的.

django django-forms django-admin

8
推荐指数
1
解决办法
5043
查看次数

标签 统计

django ×1

django-admin ×1

django-forms ×1