我正在使用Django为用户创建OneToOneField对象,代码如下:
class ControlInformation(models.Model):
user = models.OneToOneField(User)
TURN_ON_OFF = (
('ON', 'On'),
('OFF', 'Off'),
)
AUTO_MANU = (
('ON', 'On'),
('OFF', 'Off'),
)
TEMP_DINNINGROOM = (
('HIGH', 'High'),
('MEDIUM', 'Medium'),
('LOW', 'Low'),
)
TEMP_LIVINGROOM = (
('HIGH', 'High'),
('MEDIUM', 'Medium'),
('LOW', 'Low'),
)
turn_on_off = models.CharField(max_length=2, choices=TURN_ON_OFF)
auto_manu = models.CharField(max_length = 2, choices=AUTO_MANU)
temp_dinningroom = models.CharField(max_length=2, choices=TEMP_DINNINGROOM)
temp_livingroom = models.CharField(max_length=2, choices=TEMP_LIVINGROOM)
#signal function: if a user is created, add control information to the user
def create_control_information(sender, instance, created, **kwargs):
if created:
ControlInformation.objects.create(user=instance)
post_save.connect(create_control_information, sender=User)
然后,我用下面的代码为这个对象创建了一个表单:
class ControlInformationForm(forms.Form):
TURN_ON_OFF = (
('ON', 'On'),
('OFF', 'Off'),
)
AUTO_MANU = (
('ON', 'On'),
('OFF', 'Off'),
)
TEMP_DINNINGROOM = (
('HIGH', 'High'),
('MEDIUM', 'Medium'),
('LOW', 'Low'),
)
TEMP_LIVINGROOM = (
('HIGH', 'High'),
('MEDIUM', 'Medium'),
('LOW', 'Low'),
)
on_off = forms.ChoiceField(label="on_off", choices=TURN_ON_OFF)
auto_manu = forms.ChoiceField(label="auto_manu", choices=AUTO_MANU)
temp_dinningroom = forms.ChoiceField(label="temp_dinningroom", choices=TEMP_DINNINGROOM)
temp_livingroom = forms.ChoiceField(label="temp_livingroom", choices=TEMP_LIVINGROOM)
最后,我用
ControlInformation = request.user.get_profile()
form=ControlInformationForm(request.POST)
在视图.py获取ControlInformation对象的值,但它不起作用(错误:“UserProfile”对象没有“turn\u on\u off”属性)。我想问题是因为我使用了request.user.get_profile()
。如何修改它以获得ControlInformation对象的值,然后修改并保存它?你知道吗
不要使用
ControlInformation = request.user.get_profile()
,而是使用:更多提示:
使用
ModelForm
从模型自动创建窗体。您可以使用
BooleanField
而不是开/关。您可以对两个字段使用一次查找:
享受Django!你知道吗
相关问题 更多 >
编程相关推荐