【问题标题】:How to test your django model using shell [duplicate]如何使用 shell 测试你的 django 模型
【发布时间】:2017-12-10 23:00:57
【问题描述】:

我正在尝试学习 Django,但有一个非常简单的问题,我无法解决。我将我的 Django 模型编码为:

class Work(models.Model):
    STATES = (
        ('STARTED', 'started'),
        ('IN_PROGRESS', 'running'),
        ('FINISHED', 'completed'),
        ('ERROR', 'Error'),
    )
    owner = models.ForeignKey("auth.User")
    temp  = models.CharField(max_length=50, null=True, blank=True)
    current_run = models.CharField(max_length=50, null=True, blank=True)
    completion_percentage = models.IntegerField(blank=True, null=True)
    status = models.CharField(choices=STATES, max_length=50, blank=True, null=True)

我已经重新生成了数据库,现在我想使用 Django 视图。但是,在此之前有没有办法使用 python manage.py shell 对其进行测试?

我正在努力:

d_ = Work.objects.create(owner='admin')

我得到了错误

ValueError: Cannot assign "'admin'": "Work.owner" must be a "User" instance.

目前,我在“用户”中将用户 ID 设为“管理员”。 我尝试做一些事情来解决错误,但由于所有者字段(设置为 auth.User 的外键),我不断收到某种错误。

我们将不胜感激。谢谢!

【问题讨论】:

  • 那条消息让您感到困惑的是什么?您需要一个实际的用户实例,而不是用户名。
  • @DanielRoseman 你是对的。我尝试了用户实例,但我做错了。现在,我明白了,下面的答案也对我有帮助。谢谢!

标签: python django django-models django-shell


【解决方案1】:

您需要使用实际的用户对象。试试这个

from django.contrib.auth.models import User
admin = User.objects.get(username='admin')
d_ = Work.objects.create(owner=admin)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多