[英]Django models, using username
models.py,它不起作用。 我已經嘗試了一切。
class UserProfile(models.Model):
user = models.OneToOneField(User)
titulo = models.CharField(max_length=50, default= user.get_username())
descripcion = models.TextField()
喚醒服務器時出錯“OneToOneField沒有屬性get_username”。 我想使用自己的用戶名為用戶設置默認的個人資料頁面標題。
在類聲明時指定動態默認值是行不通的,因為Python只在應用程序啟動時分析此代碼,而不是在保存實際實例時分析。
而是覆蓋模型的save()
方法以檢查titulo
是否為空。 如果是,則可以將其設置為user.get_username()
如下所示:
# models.py
class UserProfile(models.Model):
user = models.OneToOneField(User)
titulo = models.CharField(max_length=50, blank=True, default="")
descripcion = models.TextField()
def save(self, *args, **kwargs):
# If titulo is empty set it to the username.
if not self.titulo:
self.titulo = self.user.get_username()
# Now call the save() method on super to store the instance.
super(UserProfile, self).save(*args, **kwargs)
另一個問題是,如果你真的想將username
保存為titulo
。 這樣,如果用戶更改了用戶名,則必須跟蹤該用戶並同步該字段,這會在代碼中添加更多內務處理邏輯。
允許titulo
為空並且在您的視圖或模板中檢查是否為空,可能更容易titulo
不容易出錯。 如果是,您仍然可以渲染user.get_username()
,否則您可以渲染titulo
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.