我有一个与用户模型List
相关的模型ForeignKey
。>
我正在使用FormView
类在模板上显示此表单,除了发送变量上下文listas
之外,该上下文是与登录用户相关的所有List对象的queryset
。
但是,在将用户保存到表单之前将其传递给表单,会出现此错误:
TypeError at /listas/ __init__() got an unexpected keyword argument 'user'
我对用户
CreateView
开放,因为根据我的研究,我更愿意创建新记录并在模板上显示查询集。
models.py:
class List(models.Model): LISTA_STATUS = ( ('recibida_pagada', 'Recibida y pagada'), ('recibida_no_pagada', 'Recibida pero no pagada'), ('en_revision', 'En revision'), ('en_camino', 'En camino'), ('entregada', 'Entregada'), ('cancelada', 'Cancelada') ) name = models.CharField(max_length=100, default='Lista anónima') user = models.ForeignKey(User, on_delete=models.CASCADE) school = models.OneToOneField(School, on_delete=models.CASCADE, null=True, blank=True) status = models.CharField(max_length=20, choices=LISTA_STATUS, default='recibida_no_pagada') created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) class Meta: ordering = ['created_at'] def __str__(self): return str(self.id)
views.py:
class ListFormView(LoginRequiredMixin, FormView): form_class = ListForm template_name = "scolarte/listas.html" success_url = reverse_lazy('lists:my_lists') def get(self, request, *args, **kwargs): context = self.get_context_data(**kwargs) context['listas'] = List.objects.filter(user=request.user) return self.render_to_response(context) def form_valid(self, form): form = ListForm(data=self.request.POST, user=self.request.user) form.save() return super(ListFormView, self).form_valid(form)
html:
{% block content %} <div class="container"> <div class="row"> <div class="col-xl-12"> <!-- START HEADER Content --> <h1 class="display-4 mb-3 mt-2"> Mis Listas </h1> <!-- END HEADER Content --> </div> </div> <div class="row"> <form action="{% url 'lists:my_lists' %}" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="Submit"> </form> </div> <div class="row mt-5"> {% for lista in listas %} <!-- START CONTENT --> <div class="card-deck"> <a href="{% url 'lists:list_details' lista.id %}"> <div class="card"> <div class="card-body"> <p>{{ lista.school.name }}</p> <h5 class="card-title">{{ lista.name }}</h5> <p class="card-text"><small class="text-muted">Última modificación: {{ lista.modified_at }}</small></p> </div> </div> </a> </div> <!-- END Card Counter --> {% endfor %} </div> {% endblock %}
urls.py:
来自。导入视图
app_name =“列表”
urlpatterns = [
path('', views.ListFormView.as_view(), name='my_lists'),
path('agregar-producto/', views.add_product_to_list, name='add_product_to_list'),
path('mis-listas/', views.update_lists_count, name='update_lists_count'),
path('lista-detalles/<int:lista_id>/', views.list_details, name='list_details'),
]
我有一个与用户外键模型相关的模型列表。我正在使用FormView类在模板上显示此表单,除了发送变量上下文列表以外,它是所有列表的查询集...
感谢@hendrikschneider将我指向这篇文章: