我试图整合一个名为的应用程序, https://github.com/saebyn/django-credits" rel=“不跟随 noreferrer” >Django-Classififics , 但是在如何操控某些元素方面有困难 。
应用程序允许您通过管理部分创建一个类别和子字段, 该字段将被显示, 并允许用户在上述类别中创建一个职位 。 虽然 Django 管理允许您创建字段 :
“https://i.sstatic.net/5ozFt.png' alt=“DJango行政官”/>
并写到数据库:
""https://i.sstatic.net/siZ0b.png" alt="此处输入图像描述"/"
我无法找到如何调用这些字段并将其显示给用户。 目前, 只有标题字段被显示 。 我理解使用模型格式会允许我访问这些元素, 但我不确定如何将其与 BaseForm 整合起来( 在下面的应用程序中使用 ) :
class AdForm(BaseForm):
def __init__(self, instance, data=None, files=None, auto_id= id_%s , prefix=None,
initial=None, error_class=ErrorList, label_suffix= : ,
empty_permitted=False):
self.instance = instance
object_data = ad_to_dict(self.instance)
self.declared_fields = SortedDict()
self.base_fields = fields_for_ad(self.instance)
# if initial was provided, it should override the values from instance
if initial is not None:
object_data.update(initial)
BaseForm.__init__(self, data, files, auto_id, prefix, object_data,
error_class, label_suffix, empty_permitted)
def save(self, commit=True):
if not commit:
raise NotImplementedError("AdForm.save must commit it s changes.")
if self.errors:
raise ValueError("The ad could not be updated because the data didn t validate.")
cleaned_data = self.cleaned_data
# save fieldvalues for self.instance
fields = field_list(self.instance)
for field in fields:
if field.enable_wysiwyg:
value = unicode(stripHTML(cleaned_data[field.name]))
else:
value = unicode(cleaned_data[field.name])
# strip words in settings.FORBIDDEN_WORDS
for word in settings.FORBIDDEN_WORDS:
value = value.replace(word, )
# title is stored directly in the ad, unlike all other editable fields
if field.name == title :
self.instance.title = value
self.instance.save()
else:
# check to see if field.fieldvalue_set has a value with ad=self.instance
try:
# if it does, update
fv = field.fieldvalue_set.get(ad=self.instance)
except FieldValue.DoesNotExist:
# otherwise, create a new one
fv = field.fieldvalue_set.create(ad=self.instance)
# XXX some ugly price fixing
if field.name.endswith( price ):
m = re.match( ^$?(d{1,3},?(d{3},?)*d{3}(.d{0,2})?|d{1,3}(.d{0,2})?|.d{1,2}?)$ , value)
value = m.group(1)
value.replace( , , )
value = %.2f % float(value)
fv.value = value
fv.save()
return self.instance
如何在以上 < code> AdForm 中显示所有创建的字段?
任何赞赏的例子。谢谢。