Django 从 urls 获取属性到过滤器
Django get attribute from urls into filter
你好,我是 django 的新手,我正在尝试制作一个提供有季节和剧集的系列的网站。
我成功为意甲创建了 CreateView。现在我要为季节做 CreateView。它应该看起来像这样。
季节:
[1] [2] [3] [添加]
如果您单击“添加”,它应该会显示一个带有季节表单的模态。我的代码如下所示:
models.py
class Serie(models.Model):
title = models.CharField(max_length=120)
thumbnail = models.ImageField(upload_to=serie_dir_path)
...
class Season(models.Model):
order = models.IntegerField()
serie = models.ForeignKey(Serie, on_delete=models.CASCADE)
...
class Episode(models.Model):
title = models.CharField(max_length=120)
order = models.IntegerField()
episode = models.FileField(upload_to=episode_dir_path)
season = models.ForeignKey(Season, on_delete=models.CASCADE)
urls.py
urlpatterns = [
path('library', LibListView.as_view(), name='library'),
path('series/<int:pk>/season/<int:order>', SeriesDetailView.as_view(), name='serie-detail'),
]
views.py
class SeasonCreateView(LoginRequiredMixin, CreateView):
model = Season
fields = ['order']
def get_context_data(self, **kwargs):
context = super(SeasonCreateView, self).get_context_data(**kwargs)
context.update({
'serie': Serie.objects.filter()
})
return context
season_form.html
{% for season in serie.season_set.all %}
...
{% endfor %}
我必须在从 url 获得意甲的 filter() 中写入什么?
{% for season in serie.season_set.all %}
<p>{season}</p>
{% endfor %}
请在 for 循环定义中尝试 all() 而不是 all。
从url获取参数:
parameter = request.GET.get("parameter_name")
正在过滤:
'serie': Serie.objects.filter(model_field_name=parameter)
好的,我自己知道了。我用了 get_object_or_404
def get_context_data(self, **kwargs):
s = get_object_or_404(Serie, id=self.kwargs.get('pk'))
context = super(SeasonCreateView, self).get_context_data(**kwargs)
context.update({
'serie': s
})
return context
你好,我是 django 的新手,我正在尝试制作一个提供有季节和剧集的系列的网站。
我成功为意甲创建了 CreateView。现在我要为季节做 CreateView。它应该看起来像这样。
季节:
[1] [2] [3] [添加]
如果您单击“添加”,它应该会显示一个带有季节表单的模态。我的代码如下所示:
models.py
class Serie(models.Model):
title = models.CharField(max_length=120)
thumbnail = models.ImageField(upload_to=serie_dir_path)
...
class Season(models.Model):
order = models.IntegerField()
serie = models.ForeignKey(Serie, on_delete=models.CASCADE)
...
class Episode(models.Model):
title = models.CharField(max_length=120)
order = models.IntegerField()
episode = models.FileField(upload_to=episode_dir_path)
season = models.ForeignKey(Season, on_delete=models.CASCADE)
urls.py
urlpatterns = [
path('library', LibListView.as_view(), name='library'),
path('series/<int:pk>/season/<int:order>', SeriesDetailView.as_view(), name='serie-detail'),
]
views.py
class SeasonCreateView(LoginRequiredMixin, CreateView):
model = Season
fields = ['order']
def get_context_data(self, **kwargs):
context = super(SeasonCreateView, self).get_context_data(**kwargs)
context.update({
'serie': Serie.objects.filter()
})
return context
season_form.html
{% for season in serie.season_set.all %}
...
{% endfor %}
我必须在从 url 获得意甲的 filter() 中写入什么?
{% for season in serie.season_set.all %}
<p>{season}</p>
{% endfor %}
请在 for 循环定义中尝试 all() 而不是 all。
从url获取参数:
parameter = request.GET.get("parameter_name")
正在过滤:
'serie': Serie.objects.filter(model_field_name=parameter)
好的,我自己知道了。我用了 get_object_or_404
def get_context_data(self, **kwargs):
s = get_object_or_404(Serie, id=self.kwargs.get('pk'))
context = super(SeasonCreateView, self).get_context_data(**kwargs)
context.update({
'serie': s
})
return context