我有一个模型对象,它使用AbstractUser扩展User Object以添加字段。但是,使用html表单时,我无法将任何内容保存到这些字段中。另外,当我尝试保存在shell中时,如果字段在列表中,我无法保存...但是如果字段在列表之外,我可以保存。我正在使用带Postgres的Django 1.6。这让我发疯了。
问题仅在模型使用AbstractUser
时,普通模型没有此问题。
class AccountForm(ModelForm):
class Meta:
model = Employee
def __init__(self, *args, **kwargs):
super(AccountForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-lg-2 control-label'
self.helper.field_class = 'col-lg-4'
self.helper.layout = Layout(
Fieldset('Account Modify',
'irc_name',
'forum_username',
),
FormActions(
Submit('submit', 'Submit', css_class='btn-primary')
)
)
class Employee(AbstractUser):
irc_name = models.CharField(max_length="25")
forum_username = models.CharField(max_length="25")
class AccountModify(LoginRequiredMixin, UpdateView):
model = Employee
form_class = AccountForm
template_name = 'bot_data/account_modify.html'
success_url = '/'
Shell会议:
>>> foo = Employee.objects.all()
>>> foo[1]
<Employee: dar777>
>>> foo[1].irc_name
u''
>>> foo[1].irc_name = "Steve"
>>> foo[1].irc_name
u''
>>> bar = foo[1]
>>> bar
<Employee: dar777>
>>> bar.irc_name
u''
>>> bar.irc_name = "Steve"
>>> bar.irc_name
'Steve'
>>>
答案 0 :(得分:1)
每次切片查询集django都会获得in memory object
foo = Employee.objects.all()
foo[1] -> new instance
foo[1].irc_name = 1234 -> new instance
foo[1].save()
print foo[1].irc_name -> will print u''
最佳做法是避免切片查询集。你可以在这个视频中找到完整的答案http://www.youtube.com/watch?v=t_ziKY1ayCo#t=1923(绑定时间)