首页 > 解决方案 > 在这种情况下如何编写 __str__ func?

问题描述

我有一个“用户”模型,它有一个到用户模型的 OneToOneField 和另一个名为“user_agent”的模型,它有一个到“用户”模型的外键。如何在__str__函数中使用“first_name”和“last_name”?!

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 + ")"

标签: pythondjango

解决方案


您想要self.user.user.first_name- 但我建议您将您的user模型名称更改为类似的名称Profile以避免混淆(并且通常使用 CamelCase 作为您的模型名称)。


推荐阅读