为了账号安全,请及时绑定邮箱和手机立即绑定

根据ForeignKey返回结果

根据ForeignKey返回结果

神不在的星期二 2023-04-18 15:24:34
几天来我的代码一直有问题。我声称对 Django 没有经验。我想根据特定的“CalendarGroups”获得结果,例如仅特定 CalendarGroups 的所有日历。要在其上过滤日历的组的 ID 我想通过 url whit“goup_id”传递它。在 Url.py 中:urlpatterns = [    url(r'^$', views.hello, name='hello'), #Prova    url(r'^home/$', views.GroupCalendarView.as_view(), name='home'), #Prova    url(r'^home/(?P<group_id>\d+)/$', views.CalendarsOfGroupView.as_view(), name='calendar_view'),]在模型.py 中:class CalendarGroups(models.Model):    GRP = (       ('Amazon', 'Amazon'),       ('VICHY', 'VICHY'),    )    name = models.CharField(max_length = 155, blank=True, null=True)        @property    def get_html_url(self):        url = reverse('', args=(self.id,))        return f'<a href="{url}"> {self.name} </a>'   class Calendar(models.Model):    name = models.CharField(max_length=200)    #created_by    group = models.ForeignKey(CalendarGroups, on_delete = models.CASCADE, default='')     @property    def get_html_url(self):        url = reverse('cal:calendar_view', args=(self.id,))        return f'<a href="{url}"> {self.name} </a>'在 views.py 中:class GroupCalendarView(generic.ListView):    model = CalendarGroups    template_name = 'cal/home.html'    def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        #print (context)        return contextclass CalendarsOfGroupView(generic.ListView):        model = Calendar    template_name = 'cal/calendarOfGroup.html'    def get_queryset(self, **kwargs):        context = super().get_context_data(**kwargs)                       return context这是我当前的代码,我不知道如何使用我在 views.py 中通过“group_id”传递的内容。
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

class CalendarsOfGroupView(generic.ListView): 

      model = Calendar 

      template_name = 'cal/calendarOfGroup.html' 


      def get_context_data(self, **kwargs): 

          context = super().get_context_data(**kwargs) 

          group_id = self.kwargs['group_id']

          # create var to hold all objects that do not have name==group_id

          object_list = Calendar.objects.exclude(name=group_id)

          # update the context

          context.update({'object_list': object_list})          

          return context

编辑:过滤日历对象以仅包含匹配的对象group_id


class CalendarsOfGroupView(generic.ListView): 

      model = Calendar 

      template_name = 'cal/calendarOfGroup.html' 


      def get_context_data(self, **kwargs): 

          context = super().get_context_data(**kwargs) 

          group_id = self.kwargs['group_id']

          # create var to hold all objects that do have name==group_id

          object_list = Calendar.objects.filter(name=group_id)

          # update the context

          context.update({'object_list': object_list})          

          return context


查看完整回答
反对 回复 2023-04-18
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

group_id或任何其他 URL 参数将在以下位置可用kwargs

group_id = self.kwargs['group_id']

get_queryset您可以在您的方法或您的类可用的任何其他方法中访问它。



查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信