我正在学习Django Web的基础知识,但遇到了问题
我在 models.py 处具有以下模型(简体):
class CustomUser(AbstractUser): # Custom Admin Model
def __str__(self):
return self.username
def __len__(self):
return 1
class Task(models.Model):
title = models.CharField(max_length=250, blank=False)
author = models.ForeignKey(CustomUser, on_delete=models.CASCADE, default=None)
,也可以通过 admin.py 进行此操作:
class TaskInline(admin.TabularInline):
model = Task
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email', 'username']
inlines = [TaskInline]
fieldsets = (
(('User'), {'fields': ('username', 'email')}),
)
我目前正在使用TODO Web应用程序,我想做的是用HTML显示“任务标题”模型。
正在寻找这样的东西:
{{ user.inlines[0].title }} # This does not work
有可能吗?我是否可以为CustomModel创建一个返回他的内联模型的函数(例如:get_inline_models(self))?其他解决方案?
预先感谢:)
答案 0 :(得分:0)
如果您要根据模型通过用户实例访问任务标题,则可以:
{{ user.task_set }}
以获取与某个用户相关的所有任务。您还可以为您的作者字段定义一个related_name
选项:
class Task(models.Model):
title = models.CharField(max_length=250, blank=False)
author = models.ForeignKey(CustomUser, on_delete=models.CASCADE, default=None, related_name='tasks')
这样,您可以:
{{ user.tasks }}
了解此here。
{% for task in user.tasks %}
{{ task.title }}
{% endfor %}