4
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

django2.0.3でモデルに複数のForeignKeyを指定したかった

Last updated at Posted at 2018-06-03
class User(models.Model):
    name = models.CharField(max_length=60)

class Product(models.Model):
    user = models.ForeignKey(User, on_delete=models.SET_NULL)
    user2 = models.ForeignKey(User, on_delete=models.SET_NULL)

こんなmodelを作りたかった。

しかしこんなエラーメッセージが表示される。

    RECURSIVE_RELATIONSHIP_CONSTANT,
AssertionError: ForeignKey(<django.db.models.fields.related.ForeignKey>) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string 'self'

ググってみると、related_nameを追加すればいいとあるがやはりダメ。
しかし、Djangoの公式ドキュメントを見たら一発解決。

class Product(models.Model):
    user = models.ForeignKey('User', related_name='user_from')
    user2 = models.ForeignKey('User', related_name='user_from')

'User'とクォーテーションで囲ったらイケた。
ForeignKeyを一つしか定義してないときはクォーテーションで囲わなくても大丈夫だったからまさかこんなので直るとは思っていなかった。まずググる前に公式ドキュメントを見るのが一番だと痛感した。

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?