在我的模型中,我有两个任务和项目。我尝试做的是将相关任务添加到更新项目的页面上下文中。
我得到的错误是:
输入对象'项目'没有属性' id'
在models.py中我有任务类:
class task(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=200)
....
related_project = models.ForeignKey(project, blank=True, null=True)
同样在models.py中,我有项目类:
class project(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=200)
...
我用来更新Project对象的视图是:
class ProjectUpdate(UpdateView):
"""
This will be used to view and update projects
"""
template_name = 'tasks/update-project.html'
model = project
fields = ['name','status', 'purpose', 'vision', 'big_steps', 'context', 'priority', 'due_date', 'related_project']
def get_context_data(self, **kwargs):
"""
This puts the tasks related to the particular project in context
"""
# Call base implementation first to get a context
context = super(ProjectUpdate, self).get_context_data(**kwargs)
# TO DO: Add in querysets of related tasks
context = context['related_tasks'] = task.objects.filter(related_project__id=project.id)
问题似乎是" project.id"实际上并没有访问" id"特定项目对象。如何通过任务" related_project"添加链接到正在更新的特定项目对象的任务。属性(具有项目对象的外键)?
答案 0 :(得分:1)
您无法使用<xs:simpleType name="ParamTypeRestriction">
<xs:restriction base="xs:string">
<xs:enumeration value="MyBaseClass"></xs:enumeration>
<xs:enumeration value="MyClassA"></xs:enumeration>
...
</xs:restriction>
</xs:simpleType>
,因为project.id
是模型,而不是您要更新的实例。通常,您可以调用模型project
和模型实例Project
。调用模型project
会使其他用户感到困惑,因为他们会认为它是实例而不是模型。
在project
方法中,您可以使用get_context_data
访问该对象。
self.object
确保您未设置context['related_tasks'] = task.objects.filter(related_project__id=self.object.id)
。