Объект пользователя не имеет атрибута
Я создаю приложение, которое управляет функциями ранжирования и ELO для местного магазина хобби-игр. Я использую django для написания приложения. У меня возникают проблемы, когда я пытаюсь понять, как получить доступ к модели пользователя по его имени.
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
mtg_currentELO = models.IntegerField(default=1000)
mtg_highestELO = models.IntegerField(default=1000)
mtg_lowestELO = models.IntegerField(default=1000)
def __str__(self):
return self.user.username
views.py
def home(request):
users = User.objects.all()
if request.method == 'GET':
user1 = User.objects.get(username=request.POST['player1'])
user2 = User.objects.get(username=request.POST['player2'])
print(user1, user2) # DEBUG LINE -- it does find
print(user1.mtg_currentELO) # DEBUG LINE -- it does NOT FIND
Итак, я пытаюсь найти mtg_currentELO от пользователя user1. Однако я не могу получить доступ к нему через user1.mtg_currentELO. Как я могу получить доступ к свойству mtg_currentELO от Profile через имя пользователя?
Вы должны присвоить связанное имя полю OneToOneField следующим образом:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="assigned_profile")
...
тогда вы сможете получить доступ к нему как user1.assigned_profile.mtg_currentELO
Подробности вы можете найти здесь: https://docs.djangoproject.com/en/4.0/ref/models/fields/#django.db.models.OneToOneField