2017-01-05 46 views
0

まず、OneToOneField関係を使用してManyToManyFieldをユーザーに追加しようとしました。私がしようのpython manage.pyシェルに続いてDjango OneToOne Field to user ProgrammingError

ENTERPRISE_TYPE_CHOICES = (
    ('a', "A"), 
    ('b', "B"), 
    ('c', "C"), 
) 

class Enterprise(models.Model): 
    et_type = models.CharField(
     max_length = 10, 
     choices=ENTERPRISE_TYPE_CHOICES, 
     default='a' 
     ) 
    name = models.TextField(max_length=100) 
    number = models.TextField(max_length=7) 

    def __str__(self): 
     return "%s %s %s" % (self.et_type, self.name, self.number) 

class Secretaire(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    workshop = models.ManyToManyField(Enterprise) 

@receiver(post_save, sender=User) 
def create_user_secretaire(sender, instance, created, **kwargs): 
    if created: 
     Secretaire.objects.create(user=instance) 

@receiver(post_save, sender=User) 
def save_user_secretaire(sender, instance, **kwargs): 
    instance.profile.save() 

:ここに私のコードです

from django.contrib.auth.models import User 
u = User.objects.create(username="a", email="[email protected]", password="a") 

そして、それはエラーをスロー:

ProgrammingErrorを: "helpdesk_secretaire" 関係は 存在しません。 LINE 1:INSERT INTO "helpdesk_secretaire"( "USER_ID")VALUES(11)RE ...

(ユーザーがまだ作成されていないが、何のACCESはuser.secretaireしないようにすることができ、それが

なぜこのエラーが発生するのかを知りませんか?

+1

あなたはmakemigrationsを実行して移行しましたか? – e4c5

+0

マイグレーションを作成して実行しましたか? –

+0

... ありがとうございました。 –

答えて

1

最初の質問に対するコメント:makemigrationsmigrateを最初に実行する必要があります。表示されるエラーメッセージは、テーブルがデータベースに存在しないことを示します。

関連する問題