标签: django-generic-views

将 django-filter 与 DetailView 类一起使用

我想用 Django 和 django-filter 制作一个动态过滤表单,如 stackoverflow 过滤器 在此输入图像描述

我想在由 DetailView 渲染的模板上使用这个过滤器,现在的问题是我搜索了很多,但没有找到如何实现这一点的示例

在我的模板中,我列出了与“材料”类相关的所有“课程”,我想在同一模板上制作一个表单,以便我可以过滤此列表

我的模板

{% for course in material_detail.courses_set.all %}
<div class="course">
    <h5>{{ course.course_name }}</h5>
    <p>{{ course.course_description }} </p>            
</div>
<hr/>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我有两个模型“材料”和“课程”我的 models.py

class Materials(models.Model):
    materials_name          = models.CharField(max_length=200)
    materials_description   = models.CharField(max_length=200, null=True)
    slug_material           = models.SlugField(blank=True, unique=True)


class Courses(models.Model):
    course_name             = models.CharField(max_length=200)
    course_description      = models.CharField(max_length=300, null=True)
    material                = models.ForeignKey(Materials, on_delete = models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

我有一个类 DetailView myviews.py

class MaterialsDetailView(DetailView):
    model               = Materials
    template_name       = 'tuts/material.html'
    context_object_name = 'material_detail'
Run Code Online (Sandbox Code Playgroud)

我制作了一个filters.py 文件并在其上编写了此代码,但我不知道如何将其与我的Class DetailView 链接 …

django django-generic-views django-filter

2
推荐指数
1
解决办法
2776
查看次数

Django ListView 中当前用户对象的列表

我想呈现模板上所有对象的列表,其作者是当前登录的用户。我将当前用户的用户名传递给url.py

<a href="{% url 'myscenarios' user.username %}">My List</a>
Run Code Online (Sandbox Code Playgroud)

我的网址.py:

path('myscenarios/<str:username>/', MyScenarioListView.as_view(), name='myscenarios'),
Run Code Online (Sandbox Code Playgroud)

我的问题是如何构建查询集views.py以及在 html 中的模板块中输入什么内容?

class MyScenarioListView(LoginRequiredMixin, ListView):
    model = Scenario
    template_name = 'testmanager/myscenarios.html'
    context_object_name = 'myscenarios'
    
    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Scenario.objects.filter(scenarioAuthor = user).order_by('-date_posted')
Run Code Online (Sandbox Code Playgroud)

我应该在文件中输入什么代码myscenarios.html

python django django-urls django-generic-views

2
推荐指数
1
解决办法
2621
查看次数

django的通用视图问题(detailview,get_queryset)

存在通用视图使我们的生活变得更容易,但是花在理解这些东西如何工作上的时间使得它们实际上变得更难.也许是我,但我试图想办法解决这个问题很长一段时间,我可以轻松地自己写一下这个观点并继续前进,但我坚持要学习它.

我想要显示一个自定义的DetailView类,代码抛出:

'Sculpture' object has no attribute 'filter'

from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView, DetailView
from sculptures.models import Sculpture

class SculptureListView(ListView):
    """docstring for SculptureListView"""
    def get_queryset(self):
        return Sculpture.objects.all() 
class SculptureDetailView(DetailView):
    """docstring for SculptureDetailView"""
    def get_queryset(self):
        sculpture = get_object_or_404(Sculpture, slug=self.kwargs['slug'])
        return sculpture
Run Code Online (Sandbox Code Playgroud)

我知道它需要一个线路修复 - 最多但无法弄清楚.

和想法?

django django-generic-views

1
推荐指数
2
解决办法
2382
查看次数

FormView:View没有返回HttpResponse对象

我知道当视图的代码路径没有返回时HttpResponse,这是显而易见的.我是django的新手,所以这可能是完全错误的.

这是FormView代码.我需要覆盖render_to_response吗?

class AddAdvertView(FormView):
    form_class = NewAdForm

    def get(self, *args, **kwargs):
            self.campaign = get_object_or_404(Campaign, id__exact = self.kwargs['campaign_id'])

    def post(self, request, *args, **kwargs):
            pass

    def get_form(self, form_class):
            return form_class(initial = {}, campaign = self.campaign)

    def get_success_url(self):
            return self.request.META.get('HTTP_REFERER', None)

    def form_valid(self, form):
            return HttpResponse('form valid')

    def form_invalid(self, form):
            return HttpResponse('form invalid')
Run Code Online (Sandbox Code Playgroud)

python django django-generic-views

1
推荐指数
1
解决办法
2192
查看次数

Django通用登录视图会自动创建变量吗?

我正在使用django通用登录视图.这是我的urls.py

from django.contrib.auth.views import login
....
url(r'^login/$', login),
Run Code Online (Sandbox Code Playgroud)

这是我的login.html页面:

<body>
<h1>User Login</h1>

{% if form.errors %}
    <p>Your username and password did not match. 
    Please try again.</p>
{% endif %}
<form method="post" action="">{% csrf_token %}
    <p><label for="id_username">Username:</label>
    {{ form.username }}</p>

    <p><label for="id_password">Password:</label>
    {{ form.password }}</p>

    <input type="hidden" name="next" />
    <input type="submit" value="login" />
</form>
</body>
Run Code Online (Sandbox Code Playgroud)

这是通用登录视图:

def login(request, template_name='registration/login.html',
      redirect_field_name=REDIRECT_FIELD_NAME,
      authentication_form=AuthenticationForm,
      current_app=None, extra_context=None):
"""
Displays the login form and handles the login action.
"""
redirect_to = request.REQUEST.get(redirect_field_name, '')
if request.method == …
Run Code Online (Sandbox Code Playgroud)

python django variables login django-generic-views

1
推荐指数
1
解决办法
195
查看次数

使用CreateView和inlineformset_factory在Django中发出保存图像

使用通用的基于类的CreateView我试图通过ClearableFileInput小部件上传图像,这是由inlineformset_factory使用的默认小部件,但这是失败的.

form.save()在我的视图中运行得很好,它似乎是失败的specimage_form.save().如果我在提交过程中打印self.request.FILES,看起来好像所选文件在内存中 - 但是在SpecImage save()函数中粘贴一个print语句,很明显这个函数永远不会被调用.

可以使用内联管理站点上传图像,在这种情况下我会看到print语句.

这是我的代码 - 感谢任何建议或指导.提前致谢..

models.py

class Spec(models.Model):
    car = models.ForeignKey('vehicles_dvla_listpoint.AutoLookup')
    owner = models.ForeignKey(User)
    uploaded = models.DateField(default=date.today, editable=False)

    def get_absolute_url(self):
        return reverse('car_create')

    def __unicode__(self):
        return "{0}".format(self.car)

class SpecImage(models.Model):
    def orig_car_id_folder(instance, filename):
        return 'uploads/images/orig/{0}/{1}'.format(instance.car_id, filename)
    def thumb_car_id_folder(instance, filename):
        return 'uploads/images/thumb/{0}/{1}'.format(instance.car_id, filename)

    car = models.ForeignKey(Spec)

    orig_image = models.ImageField(
        upload_to=orig_car_id_folder, 
        verbose_name='Upload Image',
    )

    thumbnail = models.ImageField(
        upload_to=thumb_car_id_folder,
        null=True,
        blank=True,
    )

    def save(self, force_update=False, force_insert=False): 
        print "here ...." # << Don't see this where submitting outside of the admin
        import …
Run Code Online (Sandbox Code Playgroud)

django django-generic-views django-class-based-views

1
推荐指数
1
解决办法
1695
查看次数

Django在表单上创建视图参数

我有一个Django generic create view

class TestCreateView(CreateView):
    form_class = TestCreateForm

##forms.py
class TestCreateForm(forms.ModelForm):
    class Meta:
        model = Test

    def __init__(self, user, *args, **kwargs):
        super(TestCreateForm).__init__(*args, **kwargs)
        self.fields['test_field'] = Testing.objects.filter(user=user)
Run Code Online (Sandbox Code Playgroud)

在基于函数的视图中,我会这样:

form = TestCreateForm(request.user)
Run Code Online (Sandbox Code Playgroud)

现在,在基于通用类的视图上,我是否必须重写,get并且post为此仅使用方法?

django django-generic-views

1
推荐指数
1
解决办法
1823
查看次数

AttributeError:myview在Django中的自定义mixin中没有属性对象

我正在尝试写一个mixin能够部分保存表单并稍后恢复.当表单很长并且用户无法一次性完成时,这非常有用.mixin下面的代码直接来自Marty Alchin的prodjango书.我已经在误差来自哪个是代码评论POST methodmixin.下面的详细的错误描述.

从追溯,我认为错误来自这两个调用self.get_form(form_class)get_form_kwargs.但我不知道如何解决这个问题.

这是view:

class ArticleCreateView(PendFormMixin, CreateView):
      form_class = ArticleForm
      model = Article
      template_name = "article_create.html"
      success_url = '/admin'
Run Code Online (Sandbox Code Playgroud)

这是mixin:

from django.views.generic.edit import FormView
from pend_form.models import PendedForm, PendedValue
from hashlib import md5



class PendFormMixin(object):
    form_hash_name = 'form_hash'
    pend_button_name = 'pend'
    def get_form_kwargs(self):
        """
        Returns a dictionary of arguments to pass into the form instantiation.
        If resuming a pended form, this …
Run Code Online (Sandbox Code Playgroud)

django mixins django-generic-views django-class-based-views

1
推荐指数
1
解决办法
3729
查看次数

如何计算与 ListView 中显示的项目相关的对象?

我正在尝试使用ListView来显示我所有的城镇。

但是,我想显示每个城镇的居民人数。

模型.py

class Town(models.Model):
    name = models.CharField()

class Citizen(models.Model):
    name = models.CharField()
    town = models.ForeignKey(Town)
Run Code Online (Sandbox Code Playgroud)

视图.py

class TownView(ListView):
    model = Town
    def get_context_data(self, **kwargs):
        context = super(TownView, self).get_context_data(**kwargs)
        context['towns'] = Town.objects.all().prefetch_related('players')
        return context
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为 prefetch_related 仅当我在城镇视图中有玩家属性时才起作用,也许是通过 manytomany 字段。

我如何为每个城镇检索将外键设置为该城镇的公民数量?

另外,我的模板会是什么样子?目前,它看起来像这样:

模板

<table>
{% for town in open_towns %}
    <tr>
        <td><a href="/town/join/{{ town.slug }}/">{{ town.name }}</a></td>
        <td>population : {{ Player.objects.filter(town=town).count() }}</td>
    </tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)

但这显然也是错误的。

python django listview django-views django-generic-views

1
推荐指数
1
解决办法
805
查看次数

使用Django,我如何将我的模型的ForeignKey添加到CreateView?

我正在创建一个应用程序,允许人们设置可能跨越多天的教学事件.这是我的一些代码:

楷模:

class Event(models.Model):
    event_name = models.CharField('Event Name', max_length=200)
    short_description = models.TextField('Short Description', max_length=140)

class EventDay(models.Model):
    event = models.ForeignKey(Event)
    day_name = models.CharField(max_length=30)
    start_time = models.DateTimeField('Starting Date and Time')
    end_time = models.DateTimeField('Estimate Ending Time')
Run Code Online (Sandbox Code Playgroud)

查看

from .models import Event, EventDay

class EventCreate(LoginRequiredMixin, CreateView):
    model = Event
    fields = ['event_name', 'short_description']
Run Code Online (Sandbox Code Playgroud)

在我添加活动的管理员中它完美运行,允许我根据需要添加多少天.但是,在管理员之外添加页面的事件只显示来自Event的字段,而不是EventDay.

我知道我的Views代码看起来有点空,只要与EventDay有关.但是,在发布之前,我尝试了许多不同的东西,我想到尝试获取像管理页面一样工作的字段.我只是遗漏了我在这里尝试过的烂摊子.我也在文档中找不到任何关于我出错的地方.

我没有包含我的模板/网址代码,因为我不认为这是问题所在.我可以再次添加事件,而不是EventDay部分.但是我对这一切都是新手所以如果你需要我发布更多代码我会的.

python django foreign-keys django-generic-views

1
推荐指数
1
解决办法
1951
查看次数