0
我有一堆我希望分配给不同任务框的消息记录。如何将一个模型对象映射到视图中的另一个模型对象
#models.py
class TaskBox(models.Model):
name = models.CharField(max_length=64, blank=False)
def __str__(self):
return u'%s' % (self.name)
class Admin:
pass
class InboxEntry(models.Model):
job_number = models.CharField(max_length=14, unique=False, blank=False, null=False)
job_name = models.CharField(max_length=64, unique=False, blank=False, null=False)
request = models.CharField(max_length=64, choices=PRINT_CHOICES, blank=True, null=True)
date_due = models.DateTimeField(("Due"),auto_now=False)
note = models.TextField(max_length=1000, unique=False, blank=True, null=True)
assigned_by = models.ForeignKey(UserProfile, blank=False, null=False)
box = models.ForeignKey(TaskBox)
assigned_to = models.ManyToManyField(UserProfile, related_name='name', blank=True)
status = models.CharField(max_length=30, choices=STATUS_CHOICES, default="Awaiting Action")
def __str__(self):
return u'%s %s' % (self.job_number, self.job_name)
class Admin:
pass
class Meta:
ordering = ['status']
的想法是为模板有一些通用的标签,如{{在taskboxes taskbox}}创建每个taskbox,将举行一个表,这个盒子的记录单独的股利。我的问题是构建视图功能...
#views.py
def display_prdInboxEntry(request, id):
if request.method == 'POST':
form = PrdInboxForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('taskmanager/display/'+ id +'/')
else:
form = PrdInboxForm(request.POST)
return HttpResponseRedirect('taskmanager/display/'+ id +'/')
else:
form = PrdInboxForm()
user = request.user
**taskboxes = TaskBox.objects.all()
records_1 = InboxEntry.objects.filter(taskboxes[id]=1)
records_2 = InboxEntry.objects.filter(taskboxes[id]=2)
records_3 = InboxEntry.objects.filter(taskboxes[id]=3)
..... **
return render_to_response('taskmanager/taskmanager_view.html', {'form': form, 'taskboxes': taskboxes, 'records_1' : records_1, 'records_2' : records_2, 'records_3' : records_3, 'user': user}, context_instance=RequestContext(request))
的InboxEntry模型有一个叫做“盒子”领域,这只是给TaskBox模型的引用。我需要一种方法来映射说... TaskBox id 1与所有的“box = 1”的InboxEntry对象,以便我可以适当地填充模板。我可以构造函数来适应这种情况,还是我完全用错误的方式去做?
返回在模板中不可迭代的TaskBox对象,而不是与特定任务箱相关的条目的查询集。 – kjarsenal
@kjarsenal:我的错误,'inboxentry_set'是'Manager',而不是'QuerySet'。所以你可以过滤它,等等。如果你想全部使用'all()',就可以使用它。 –