django用户模型 - 获取其他自定义字段

时间:2013-08-02 07:37:34

标签: python django relational-database django-related-manager

我被困住了。

我有一个用户模型,它是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是表Bewertung的表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='')

1 个答案:

答案 0 :(得分:1)

不应该是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()