我在尝试在管理员中查看/创建某些模型的实例时遇到错误。虽然manage.py shell一切正常。 我看到有一些类似的答案,但我没有设法找出我的案例的解决方案。 这是控制台追溯:
所以我基本上有两个问题: 1)如何解决? 2)为什么会出现这个问题以及将来如何防止它?
谢谢!
更新: 以下是我遇到问题的其中一个模型的代码:
class ProfileModel(models.Model):
"""
Students Profile model
"""
user = models.OneToOneField(User, primary_key=True)
is_student = models.BooleanField(
verbose_name=u"Student",
default=True,
)
is_professor = models.BooleanField(
verbose_name=u"Professor",
default=False,
blank=True
)
is_staff = models.BooleanField(
verbose_name="Staff Member",
default=False,
blank=True
)
started_date = models.DateField(
auto_now_add=True,
verbose_name=u"Started Working/Studying"
)
faculty = models.ForeignKey(
'department.FacultyModel',
verbose_name=u"Faculty",
blank=True,
null=True,
)
department = models.ForeignKey(
'department.DepartmentModel',
verbose_name=u"Department",
blank=True,
null=True,
)
student_group = models.ForeignKey(
'department.StudentGroupModel',
verbose_name=u"Group",
blank=True,
null=True,
)
middle_name = models.CharField(
max_length=256,
blank=True,
verbose_name=u"Middle Name",
default='')
birthday = models.DateField(
blank=True,
verbose_name=u"Date of Birth",
null=True)
contact_phone = models.CharField(
max_length=55,
blank=True,
verbose_name=u"Contact Phone",
null=True,
)
photo = models.ImageField(
blank=True,
verbose_name=u"Photo",
null=True)
def __unicode__(self):
if self.is_student:
return u"Student: %s" % self.user.get_full_name()
elif self.is_professor:
return u"Professor: %s" % self.user.get_full_name()
else:
return u"Staff Member: %s" % self.user.get_full_name()
更新2: 好的,所以我认为我现在可能是什么问题。我有扩展Django用户模型的ProfileModel,看起来我有比用户实例更多的profilemodel实例。目前我只有一个用户旗帜is_student eqals为True;然而,API仍在工作,如果我要求所有学生的列表,我将获得7个实例(1我在管理员的用户选项卡中有6个,之前在属于用户模型的字段中使用空值删除了6个)。如果我运行ProfileModel.objects.filter(is_student = True),我将得到与您在上面看到的相同的错误。这迫使我得出结论,当我在admin中删除用户实例时,不会删除Profile模型实例。这可能是问题,如果是 - 那我该如何解决呢?