【问题标题】:Why RelatedObjectDoesNotExist comes even after successful migration in pythonanywhere?为什么即使在 pythonanywhere 中成功迁移之后,RelatedObjectDoesNotExist 也会出现?
【发布时间】:2016-06-14 08:20:10
【问题描述】:

我知道有人问过类似的问题,但在我的情况下,在部署到 pythonanywhere.com 后得到了 RelatedObjectDoesNotExist。

“RelatedObjectDoesNotExist:用户没有 eisfiles。”

但是,相同的代码在本地机器上运行良好。

模型.py

    from __future__ import unicode_literals

from django.db import models

from django.contrib.auth.models import User
class gwDashboard(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    htmlname = models.CharField(max_length=100)
    def __str__(self):              # __unicode__ on Python 2
        return self.htmlname

class userInformation(models.Model):
    user =  models.ForeignKey(User)
    DbName = models.CharField(max_length=200)
    DbTable = models.CharField(max_length=200)
class Employee(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    department = models.CharField(max_length=100)
class eisfiles(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    htmlname = models.CharField(max_length=100)
    meterId = models.CharField(max_length=100)
    esiid = models.CharField(max_length=100)
    metermultiplier = models.CharField(max_length=100)
    DbName = models.CharField(max_length=100,default='800WILCREST')
    DbTable = models.CharField(max_length=100)

    def __str__(self):
        return self.htmlname
    def __str__(self):
        return self.DbName
class Member(models.Model):
    ID = models.AutoField(primary_key=True)
    FIRST_NAME = models.CharField('First name', max_length=50)
    LAST_NAME = models.CharField('Last name', max_length=50)

# Using multi table inheritance - automaticly creates one to one field
class MemberDetail(Member):
    DATE_OF_BIRTH = models.DateField('Date of birth')
    EMAIL = models.EmailField('E-mail')
    PHONE = models.CharField('Phone', max_length=15)

Views.py

def home(request):
userName = request.user
u = User.objects.get(username=userName);
DbName=u.eisfiles   //THIS LINE OF CODE THROWS ERROR
   try:
    DbName=u.eisfiles   //THIS LINE OF CODE THROWS ERROR
    DbName=u.eisfiles.DbName
    direct=''


    return render_to_response(
    'registration/result.html',
    { 'kWhHeatMap': kWhHeatMap, 'temHeatMap':temHeatMap,"histKwhChart":histKwhChart,'officeBuilding':officeBuilding},
    )
except User.eisfiles.RelatedObjectDoesNotExist:
   pass
   return render_to_response(
   'registration/result.html',
   { 'kWhHeatMap': "", 'temHeatMap':"","histKwhChart":"",'officeBuilding':""},
   )
# except User.AttributeError:
#    return HttpResponse('something went wrong!! try again')
finally:
    pass

【问题讨论】:

  • 因此,该用户没有相关的 eisfiles 对象。你的问题到底是什么?
  • @DanielRoseman 我已经完成了正确的迁移,但是为什么 u.eisfiles 代码行会抛出错误
  • 因为特定用户没有为相关对象定义数据。
  • @DanielRoseman 告诉我如何为该特定用户添加数据,当我在本地运行它时,我只是执行了迁移文件。你想让我发布那个迁移文件吗

标签: django django-models pythonanywhere


【解决方案1】:

您可能需要检查您尝试检索的用户是否确实存在。

userName = request.user # ??? This is the user object not the username
u = User.objects.get(username=userName)

您的查询似乎有问题。试试这个吧:

user = request.user
u = User.objects.get(id=user.id)
DbName = u.eisfiles.DbName 

【讨论】:

  • eisfiles 表中没有数据,不知道为什么?我已在迁移文件中正确链接
  • 你从未创建过任何东西。表格将如何填充
  • 告诉我如何创建它?
  • 使用managercreate方法:eisfiles.objects.create(user=user, ...)。根据需要传递其他参数。在哪里执行此操作完全取决于您。
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2012-06-13
  • 2021-12-02
相关资源
最近更新 更多