标签:classlist orm div file 技术 int google turn ret
models代码如下:
class Course(models.Model): name = models.CharField(unique=True, max_length=64) price = models.PositiveIntegerField(default=19800) outline = models.TextField() def __str__(self): return "%s" % self.name class Meta: verbose_name_plural = "课程信息表" verbose_name = "课程信息表" class ClassList(models.Model): course = models.ForeignKey("Course") semester = models.PositiveIntegerField(verbose_name="学期") class_type_choice = ((0, ‘脱产‘), (1, ‘周末‘), (2, ‘网络‘), ) branch = models.ForeignKey("Branch") class_type = models.PositiveIntegerField(choices=class_type_choice) teachers = models.ManyToManyField("UserProfile") start_date = models.DateField() end_date = models.DateField() def __str__(self): return "%s(%s)" % (self.course, self.semester) class Meta: verbose_name_plural = "班级信息表" verbose_name = "班级信息表" unique_together = ("course", "semester")
两个表关系如上,ClassList表的course是一个外键,关联上面的Course表。
我想在ClassList中定义__str__函数,就像代码中写的。
我是用django的modelform来处理数据并构建web页面。
结果在进入那个由modelform构建的页面时,发生了异常
if rel_obj is None and not self.field.null: raise self.RelatedObjectDoesNotExist( "%s has no %s." % (self.field.model.__name__, self.field.name) ) else: return rel_obj
so,就是那个RelatedObjectDoesNotExist,google了很久,发现有个网友说的很好:
https://stackoverflow.com/questions/26270042/how-do-you-catch-this-exception#comment41357708_26270785
class ClassList(models.Model): course = models.ForeignKey("Course") semester = models.PositiveIntegerField(verbose_name="学期") class_type_choice = ((0, ‘脱产‘), (1, ‘周末‘), (2, ‘网络‘), ) branch = models.ForeignKey("Branch") class_type = models.PositiveIntegerField(choices=class_type_choice) teachers = models.ManyToManyField("UserProfile") start_date = models.DateField() end_date = models.DateField() def __str__(self): try: return "%s(%s)" % (self.course, self.semester) except Course.DoesNotExist: return "%s" % self.semester
正如大神网友所说,我抓住了这个异常,随便返回个不是外键的值就好了。
无FUCK说~~~希望能帮到大家。。。
Django models的诡异异常RelatedObjectDoesNotExist
标签:classlist orm div file 技术 int google turn ret
原文地址:http://www.cnblogs.com/yunweiqiang/p/7391259.html