在Django中使用OneToOneField

瑞林

我已经意识到一些应用程序模型:

from django.db import models

class Commentary(models.Model):
    user_id = models.ForeignKey(User)
    created_date = models.DateField()
    comment = models.TextField()

class Role(models.Model):
    role_name = models.CharField(max_length=25)

class User(models.Model):
    login = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    address = models.CharField(max_length=255)
    phone = models.CharField(max_length=25)
    postcode = models.CharField(max_length=25)
    email = models.EmailField()
    role_id = models.OneToOneField(Role)

之后,在控制台中输入“ python manage.py makemigration mainws”以在我的数据库中进行迁移,但是,在堆栈跟踪中出现了错误。如果在django文档中查找一对一的示例,我们可以看到与他的相似之处,但没有选择primary_key=True我怎样才能解决这个问题或者也许更好的使用ForeignKeyunique=True此问题,或者其他什么东西?

堆栈跟踪:

=> python manage.py makemigration mainws
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/savicvalera/code/lab8/website/mainws/models/__init__.py", line 1, in <module>
    from . import Commentary, MailList, Product, Provider, Rate, Review, Role, Sale, ShoppingCart, Status, Supplies, User
  File "/Users/savicvalera/code/lab8/website/mainws/models/Commentary.py", line 11, in <module>
    from . import Product, User
  File "/Users/savicvalera/code/lab8/website/mainws/models/User.py", line 14, in <module>
    class User(models.Model):
  File "/Users/savicvalera/code/lab8/website/mainws/models/User.py", line 21, in User
    role_id = models.OneToOneField(Role,to_field='id')
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1799, in __init__
    super(OneToOneField, self).__init__(to, to_field, OneToOneRel, **kwargs)
  File "/Users/savicvalera/code/lab8/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1612, in __init__
    assert isinstance(to, six.string_types), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
AssertionError: OneToOneField(<module 'mainws.models.Role' from '/Users/savicvalera/code/lab8/website/mainws/models/Role.pyc'>) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string u'self'
凯文·克里斯托弗·亨利

如果我正确理解您的代码组织,则问题出在您的导入中。当你说

from . import Role

您正在导入Role.py名为的模块对象Role在该模块内(我假设)是您的Role模型类。因此,您真正想要的是:

from .Role import Role

或者:

from . import Role

...
role_id = models.OneToOneField(Role.Role)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Django中使用OneToOneField

来自分类Dev

无法使用Django REST发布OneToOneField

来自分类Dev

如何使用Django Rest Framework更新OneToOneField

来自分类Dev

无法使用Django REST发布OneToOneField

来自分类Dev

Django REST框架:使用OneToOneField无法获取

来自分类Dev

使用OneToOneField时,Django模型u'id'发生冲突

来自分类Dev

Django Python 3.x-OneToOneField使用ContentTypes覆盖delete()

来自分类Dev

Django:使用个人资料onetoonefield错误扩展用户模型

来自分类Dev

在 Django 的 OneToOneField 上使用 .save() 时出现 IntegrityError

来自分类Dev

Django OneToOneField Unicode方法

来自分类Dev

Django访问OneToOneField

来自分类Dev

Django的:OneToOneField-RelatedObjectDoesNotExist

来自分类Dev

Django访问OneToOneField

来自分类Dev

Django的OneToOneField或ForeignKey?

来自分类Dev

Django OneToOneField和信号

来自分类Dev

OneToOneField 不工作 django

来自分类Dev

Django onetoonefield不保存实例

来自分类Dev

Django:具有OneToOneField的ModelForm

来自分类Dev

Django OneToOneField,ManyToManyField,外键

来自分类Dev

Django从ManyToManyField反向查找OneToOneField

来自分类Dev

Django onetoonefield不保存实例

来自分类Dev

如何更新django'user的OneToOneField

来自分类Dev

在Django中使用PasswordResetForm

来自分类Dev

在Django中使用'_id'

来自分类Dev

在Django中使用Nibabel

来自分类Dev

在Django中使用JSONText

来自分类Dev

在Django模板中使用<

来自分类Dev

在Django中使用表单

来自分类Dev

在 Django 中使用 Matplotlib