2016-09-10 12 views
0

エラー: 1)user.Login.password:(fields.E304) 'Login.username'の逆引きアクセサで 'Login.password'の逆アクセスが矛盾します。 2)user.Login.username:(fields.E304) 'Login.username'のリバースアクセサが 'Login.password'のリバースアクセサと衝突します。Djangoで逆アクセサークラッシュが発生する

models.py

from django.db import models 
from django.core.urlresolvers import reverse 

class User(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    username = models.CharField(max_length=100) 
    password = models.CharField(max_length=50) 
    confirm_password = models.CharField(max_length=50) 
    email = models.EmailField(max_length=100) 
    position = models.CharField(max_length=50) 

    def get_absolute_url(self): 
      return reverse('user:register', kwargs={'pk': self.pk}) 

class Login(models.Model): 
    username = models.ForeignKey(User, on_delete=models.CASCADE) 
    password = models.ForeignKey(User, on_delete=models.CASCADE) 

    def __str__(self): 
      login = {'username': self.username, 'password': self.password} 
      return login 
+0

ユーザモデルを作成する必要はありません.djangoはデフォルトで 'django.contrib.auth.models'にあります – arcegk

+0

ユーザとfkの関係を持つパスワードとユーザ名の両方の理由は何ですか? –

+0

この構造が理にかなっていても、それは絶対にしていません。 DjangoのUserモデルを使用します。自分で作成する必要がある場合は、AbstractBaseUserから継承します。 –

答えて

2

あなたがrelated_name属性を使用して、問題を解決することができます:

class Login(models.Model): 
    username = models.ForeignKey(User, on_delete=models.CASCADE, related_name="username_users") 
    password = models.ForeignKey(User, on_delete=models.CASCADE, related_name="password_users") 

しかし、私はあなたがユーザーとのFK関係を持つパスワードとユーザー名の両方を有する理由を得ていないのですが!!!

+2

あなたは衝突の背後にある理由を説明できますか?フィールド名が違うのはどこですか?問題はどこですか? – rohanagarwal

関連する問題