我被困住了。
我有一个用户模型,它是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='')
答案 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()