[英]How do I define __str__() method in a model which has a Foreign Key of User model and get the values of fields in Django?
我在我的 Django 應用程序中具有以下 model 並且它具有 Django 的默認用戶 Model 的外鍵和__str__()
方法。
class Subject(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, max_length=100)
subject = models.CharField(max_length=100)
def __str__(self):
return f'{self.user.username}'
當我們在管理面板中打開主題模型/表時,我想在管理面板中顯示主題名稱。 假設如果我們有一個用戶名為“khubi”的用戶並且他有兩個主題,那么管理面板只顯示用戶的用戶名“khubi”,而不是顯示主題的名稱。 下面是截圖:
我試圖把這個:
return f'{self.user.username.subject}'
但它給出的錯誤是'str' object has no attribute 'subject'
我也試過了:
return f'{self.user.subject}'
它給了我錯誤'User' object has no attribute 'subject'
如何在__str__()
方法以及外部的任何地方獲取主題的名稱?
您需要調用self.subject
作為主題。
class Subject(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, max_length=100)
subject = models.CharField(max_length=100)
def __str__(self):
return '{} ({})'.format(self.subject, self.user.username)
給定的代碼將返回some_subject (khubi)
return f'{self.subject}'
是您訪問字段subject
的正確方式,因為self.user.subject
不是用戶字段的一部分。 也許您應該在用戶的字段定義中添加一個related_name
,如下所示:
class Subject(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,
max_length=100, related_name='subjects')
# ...
通過這種方式,您可以從用戶訪問他們提交的主題,只需向用戶 object 詢問其主題: subjects = user.subjects
作為其他字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.