我有一个模特
class Calendar(models.Model):
name = models.CharField(_('name'), max_length=50)
slug = models.SlugField(_('slug'), unique=True)
def as_dict(self):
return {
'id': self.id,
'name': self.name,
}
class Event(models.Model):
.....
title = models.CharField(_('titre'), max_length=100)
calendar = models.ForeignKey(Calendar, verbose_name=_('machine'))
在视图中,我有一个功能
title= 'traction'
macategorie= 'Atomisation'
p = Event(title= untitre, calendar= macategorie)
我有错误:
Event.calendar必须是"日历"实例
如果我写
p = Event(title= untitre, calendar_id= macategorie)
我有错误:
基数为10的int()的文字无效; '雾化'
如果我写
print 'category', p.calendar_id
我显示:雾化
目前尚不清楚
如何正确编写日历?
答案 0 :(得分:2)
您应该查看django-docs
您需要先创建一个Calendar
实例。
有点像这样:
title= 'traction'
macategorie= 'Atomisation'
moncalendar = Calendar.objects.create(name="Atomisation", slug="atomisation")
p = Event(title= title, calendar= moncalendar)
修改强>
如果你想确保Calendar
对象是slug的唯一对象,请尝试:
moncalendar, created = Calendar.objects.get_or_create( slug="atomisation")
moncalendar.name = "Atomisation"
moncalendar.save()
为此,您需要将模型更改为以下内容:
name = models.CharField(_('name'), max_length=50, blank=True, default="")
或
name = models.CharField(_('name'), max_length=50, blank=True, null=True)
或你会把它放在try-except中并处理大小写,你尝试显式添加一个带有相同slug的Calendar。 不知怎的,这样:
try:
moncalendar = Calendar.objects.create(name="Atomisation", slug="atomisation")
except IntegrityError:
moncalendar = Calendar.objects.get(slug="atomisation")
moncalendar.name = "Atomisation" # or handle differently as you like
moncalendar.save()
有关详细信息,请参阅here。