Django模型与manytomany字段,没有得到保存。数据填充是否正确?

时间:2013-04-09 04:15:36

标签: django django-models django-forms many-to-many

对于具有多个字段的模型,我认为我没有正确填充数据。我想创建一个包含一周中几天的模型,以便人们可以选择他们想要接收邮件通知的任何日期。生成的html结果看起来正确。即我可以选择复选框日期,但是当我单击提交底部时,只有所有其他字段都正确保存在数据库中,而不是一周中选择的日期。关于数据模型如何,我确定我犯了一个非常简单的错误。但我看不到它。应该以下工作吗?这是我一周中几天的模型:

DAYS_OF_WEEK = (
('1', 'Monday'),
('2', 'Tuesday'),
('3', 'Wednesday'),
('4', 'Thursday'),
('5', 'Friday'),
('6', 'Saturday'),
('7', 'Sunday'),
)

class Days(models.Model):
    days = models.CharField(max_length=1, choices=DAYS_OF_WEEK)

引用日期的邮件通知模型部分:

class Preferences(models.Model):
    user = models.ForeignKey(User)
    mail_days = models.ManyToManyField(Days)

选择日期的表单部分位于:

DAYS_OF_WEEK = (
    ('1', 'Monday'),
    ('2', 'Tuesday'),
    ('3', 'Wednesday'),
    ('4', 'Thursday'),
    ('5', 'Friday'),
    ('6', 'Saturday'),
    ('7', 'Sunday'),
    )

mail_days = forms.MultipleChoiceField(required=False,
            widget=CheckboxSelectMultiple, choices=DAYS_OF_WEEK)

表单正确显示,即出现星期几的复选框。当我选择框并点击提交时,一切看起来都不错。但是如果我再次选择表单,则复选框都是空的。我更改的表单的其他字段正确保存。

我想也许我看到了一个问题。这是为数据模型创建的SQL数据库表。它是空的。它没有任何东西。不应该吗?

CREATE TABLE `myapp_days` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `days` varchar(1) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

LOCK TABLES `todo_days` WRITE;
UNLOCK TABLES;

选定的天数将保存到名为myapp_preferences_my_days的表格中

CREATE TABLE `myapp_preferences_mail_days` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `preferences_id` int(11) NOT NULL,
  `days_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `preferences_id` (`preferences_id`,`days_id`),
  KEY `myapp_preferences_mail_days_2d9474d5` (`preferences_id`),
  KEY `myapp_preferences_mail_days_96c2dc77` (`days_id`)
  ) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;

LOCK TABLES `myapp_preferences_mail_days` WRITE;
INSERT INTO `myapp_preferences_mail_days` VALUES (15,1,6),(14,1,4),(13,1,5);
UNLOCK TABLES;

对我的问题有什么见解?非常感谢。

0 个答案:

没有答案