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_bewertung是 tableBewertung到 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吗?

尝试进入 shell 并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 回答