我有一个名为userprofile的对象,该对象有一个城市(“ ciudad”)字段。我正在尝试使用current_user.ciudad来获取它,但是收到一条错误消息“不存在匹配的查询”。追溯:http://dpaste.com/2BMH8EG
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
current_user = self.request.user.userprofile
print(current_user.ciudad)
return context
我的模特看起来像这样
class Ciudad(models.Model):
ciudad = models.CharField(max_length=500)
def __str__(self):
return self.ciudad
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
nombre = models.CharField(max_length=250, default=".")
apellido = models.CharField(max_length=250, default=".")
email = models.CharField(max_length=250, default="error")
telefono = models.IntegerField(default=0)
ciudad = models.ForeignKey(Ciudad, default=0, on_delete=models.SET_DEFAULT)
is_productor = models.BooleanField(default=False)
is_nodo = models.BooleanField(default=False)
def __str__(self):
return str(self.user)
答案 0 :(得分:3)
错误回溯
不存在匹配查询。
文件 “ C:\ Users \ Gonzalo \ Desktop \ webdevtests \ django4 \ biodem_dj \ firstpage \ views.py” 在get_context_data中 69.打印( current_user.ciudad )
错误消息是不言自明的。当前用户为self.request.user.userprofile
,并且没有任何对应的Ciudad。
发生此错误的原因是您删除了某些UserProfile对象引用的Ciudad对象。由于您在ciudad = models.ForeignKey(Ciudad, default=0, on_delete=models.SET_DEFAULT)
中有UserProfile Model
。因此,现在所有引用到您删除的Ciudad对象的UserProfile对象现在都指向ID为0的Ciudad对象,并且您的数据库中没有任何ID = 0的Ciudad对象。
答案 1 :(得分:0)
print(current_user.ciudad_id)
检查上面的代码是否打印0(默认值),也许您没有为当前用户设置密码