我有一个“用户”模型和一个名为“ user_agent”的模型,其中“用户”模型具有一个对用户模型的OneToOneField,该模型具有对“用户”模型的外键。我如何在__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 + ")"
答案 0 :(得分:1)
您想要self.user.user.first_name
-但我建议您将user
模型名称更改为Profile
之类,以免造成混淆(并通常将CamelCase用作模型名称)。
答案 1 :(得分:0)
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
和{{1 }}。
此外,通常python类是大写的,没有下划线:
self.last_name
和class User(models.Model)