2

ハマった。

django のユーザー モデルのサブクラスであるユーザー モデルがあります。

ユーザーモデルに関連する他のテーブルがあります。

これらのテーブルからいくつかの値を取得したかったのですが、次のように書かれています。

'User' object has no attribute 'users_bewertung'

私のコードは次のとおりです。

    _username = request.POST.get('username_login')
    pwd = request.POST.get('pwd_login')
    user = authenticate(username=_username, password=pwd)
    if user is not None:
        if user.is_active:
            login(request, user)
            ratings = user.users_bewertung.all()
            #...

users_bewertungBewertungtableから Table への参照フィールドの関連名User:

von_user = models.ForeignKey(User,related_name="users_bewertung")

関連するマネージャーを介してこれらの情報にアクセスするにはどうすればよいですか?

編集:私のmodel.py:

from django.contrib.auth.models import User

class User(User):
  registerdate = models.CharField(max_length=400,default='')    
  foto = models.ImageField(upload_to="user/",default='')    
  uniq_hashed = models.CharField(max_length=400,default='')
  kennwort = models.CharField(max_length=200,default='')
  confirmed = models.CharField(max_length=10,default='')
4

1 に答える 1

2

そうではないuser.bewertung.users_bewertungでしょうか?

シェルに入りdir()、ユーザーで使用してみてください:

python manage.py shell
from django.contrib.auth.models import User
usrs = User.objects.all()
dir(usrs[0])

そのユーザーが利用できるメソッドが表示されます。このようなものを使用して、正しい方法を発見できるはずです。

__isnullユーザーのフィルターを使用して、より適切に絞り込むことができる場合があります。

usrs = User.objects.filter(bewertung__isnull=False)
dir(usrs[0])

アップデート

おそらく試してみる必要があります_set

ratings = user.users_bewertung_set.all()

また

ratings = user.bewertung_set.all()

別の可能性

おそらく問題は、ログインしているユーザーが Bewertung モデルにないことです。おそらく、モデルを参照する前に、存在するかどうかを確認する必要があります。

if user.is_active:
    login(request, user)
    if hasattr(user, 'users_bewertung'):
        ratings = user.users_bewertung.all()
于 2013-08-02T07:47:23.553 に答える