Объект пользователя не имеет атрибута

Я создаю приложение, которое управляет функциями ранжирования и 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

Вернуться на верх