我创建了一个用户填写的表格,然后使用reportlab创建其答案的pdf。
除了包含列表的charfield(preferred_topics)之外,其他方法都很好。数据保存如下:
['ANI', 'EDU', 'ENV']
我认为这可能是一个问题,因为id会像这样保存它来保存数据:
[['ANI'], ['EDU'], ['ENV']]
但是在网站上效果很好。
因此要使用get_FOO_display()
将人类可读数据打印到pdf即时消息,但这不适用于preferred_topics。如果我拨打(user.personalinformation.get_preferred_topics_display()
,我会得到:
AttributeError at /enrolment/final_question/
'PersonalInformation' object has no attribute 'get_preferred_topics_display'
这是我的其他相关代码:
model.py
preferred_topics = models.CharField(max_length=200, default='')
utils.py
# generate pdf
def generate_pdf(request):
# get user
user = request.user
# data that will be printed to the pdf
page_contents = [
['Personal Information'],
['Name:', '%s %s' %(user.personalinformation.first_name, user.personalinformation.surname)],
['E-mail:', '%s' %(user.email)],
['Gender:', '%s' %(user.personalinformation.get_gender_display())],
# this field is causing grief
['Preferred Topics:', '%s' %(user.personalinformation.preferred_topics)]
]
forms.py
TOPICS = (
('ANI', 'Animals'),
('ART', 'Art'),
('COM', 'Communication'),
('CRI', 'Crime'),
)
preferred_topics = forms.MultipleChoiceField(choices=TOPICS, required=False, widget=forms.CheckboxSelectMultiple())
[我期望被告知数据被错误地保存在我的数据库中,但是不知道如何更改它,并且在我开始更改以前的工作内容之前需要确认,因为我肯定会破坏该过程中的当前工作内容。] >
摘要-我想使用user.personalinformation.get_preferred_topics_display()
,但它不起作用,我怀疑它是因为数据被错误地保存在db中,但想在破坏之前进行确认。
谢谢。
我创建了一个用户填写的表格,然后使用reportlab创建其答案的pdf。除了包含列表的charfield(preferred_topics)之外,它的效果都很好。数据保存为...
您将多个选择保存为单个字符串,这不是一个好主意,因为您将很难过滤和处理此类数据(而是使用选择的Arrayfield)