Как написать __str__ fun c в этом случае? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть модель 'user', у которой есть модель OneToOneField to User, и другая модель с именем 'user_agent', у которой есть внешний ключ к модели 'user'. Как я могу использовать 'first_name' и 'last_name' в __str__ fun c?!

class users(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, default='')
    user_type = models.ForeignKey(types, on_delete=models.SET_NULL, blank=True, null=True)
    mobile = models.CharField(max_length=20)
    active_code = models.CharField(max_length=50, blank=True)
    date_send_active_code = models.DateField(default=now, blank=True)
    count_send_active_code = models.IntegerField(default=0)
    token = models.TextField(blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
class user_agent(models.Model):
    user = models.ForeignKey(user_models.users, on_delete=models.CASCADE)
    agent = models.ForeignKey(agents, on_delete=models.CASCADE)
    parent = models.ForeignKey("self", on_delete=models.CASCADE, default='1')

    def __str__(self):
        return "(" + self.user.first_name + " " + self.user.last_name + ")"

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Вы хотите self.user.user.first_name - но я настоятельно рекомендую вам изменить название вашей модели user на что-то вроде Profile, чтобы избежать путаницы (и в целом используйте CamelCase для названий моделей).

0 голосов
/ 17 марта 2020
def __str__(self):
    return "({} {})".format(self.user.first_name, self.user.last_name)

или, если вы используете python 3, используйте f строк:

def __str__(self):
    return f"({self.user.first_name} {self.user.last_name})"

РЕДАКТИРОВАТЬ: не уверен, если вы спрашиваете о модели user или user_agent, если это пользовательская модель, просто используйте приведенный выше код, но с self.first_name и self.last_name.

Кроме того, обычно python классы в верхнем регистре без подчеркивания: class User(models.Model) и class UserAgent(models.Model)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...