我们正在以管理表单添加自定义的字段集,以显示和保存视频信用。
这是我们要添加功能集的地方。
def get_fieldsets(self, request, obj=None):
fieldsets = super(CreditsAdminMixin, self).get_fieldsets(request, obj=None)
for category in CreditCategory.objects.all().order_by('name'):
fields = []
for field in category.fields.all().order_by('name'):
field_name = "credit_%s_%s" % (slugify(category.name), slugify(field.name))
fields.append(field_name)
self.exclude += (field_name, )
fieldsets.append((category.name, {'fields': fields}))
return fieldsets
信贷类别
是每个学分的类别。
领域
是用户在其中输入值的每个领域的名称。
下面是呈现上述形式的代码:
def __init__(self, *args, **kwargs):
super(CreditsFormMixin, self).__init__(*args, **kwargs)
self.helper_credits = FormHelper()
self.helper_credits.form_tag = False
fieldsets = []
for category in CreditCategory.objects.all():
fields = []
for field in category.fields.all():
field_name = "credit_%s_%s" % (slugify(category.name), slugify(field.name))
self.credits_keys.append({"key":field_name,"value":field})
initial = None
if self.instance.pk:
try:
initial = str(self.instance.credits.get(field=field))
except Credit.DoesNotExist:
pass
except Credit.MultipleObjectsReturned:
pass
self.fields[field_name] = forms.CharField(label=field.name, initial=initial,max_length=255,
required=False, validators=[validate_credit_field])
fields.append(Field(field_name))
fieldsets.append(CollapsibleFieldset(category.name, ColumnFields(*fields)))
self.helper_credits.layout = Layout(*fieldsets)
在这里我们保存积分:
def save_credits(self):
instance = self.instance
for field in CreditField.objects.all():
name = self.cleaned_data["credit_%s_%s" % (slugify(field.category.name), slugify(field.name))]
if name:
credit = instance.credits.filter(field=field).first()
if credit:
credit.name = name
credit.save()
else:
credit = instance.credits.create(field=field, name=name)
else:
instance.credits.filter(field=field).delete()
直到几周前,它仍然可以正常工作。但是,现在,随着每个信用额度的逐渐增加,在保存表格的同时我们会收到502个超时错误。是否有更好的方法来实现平台集。或者在保存它们时出现错误。我可以在那里优化一些东西吗?