【发布时间】:2020-04-15 04:38:44
【问题描述】:
感谢您花时间阅读本文。
我正在使用 Django 制作一个简单的 CRM 应用程序。这是我的模型。
models.py
class Contact(models.Model):
contact_owner = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,)
first_name = models.CharField(max_length = 30)
last_name = models.CharField(max_length = 30)
contact_id = models.AutoField(primary_key=True)
date_created = models.DateTimeField(auto_now_add=True)
这是我的观点,允许用户创建联系人。
views.py
class CreateContact(LoginRequiredMixin, CreateView):
model = Contact
template_name = 'network/contacts_list.html'
form_class = ContactForm
def get_success_url(self):
return reverse('home')
def form_valid(self, form):
form.instance.contact_owner = self.request.user
return super(CreateContact, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(CreateContact, self).get_context_data(**kwargs)
context['contacts'] = Contact.objects.filter(contact_owner=self.request.user)
return context
我正在尝试限制用户可以创建的联系人数量。在写这个问题之前,我已经研究了一些实现这一目标的方法。
使用重定向视图。它似乎只适用于 GET 请求。据我了解,在我的问题情况下,提交了 POST 请求。所以这行不通。
使用 form_invalid。我认为如果请求失败,我可以使用此功能将我重定向到页面。我不知道如何在 form_invalid 函数中传递 url。我不认为那是它的目的。
本质上,我认为我需要在 CreateView 查询中的某处添加一个计数语句,如果它大于 200,则反向('somewhere-else')。我不知道如何在 CreateView 中做到这一点,而且我对基于函数的视图非常不熟悉。
非常感谢您花时间阅读本文。我真的很珍惜你的时间。
如果您有任何问题或需要任何进一步的上下文,请告诉我。
【问题讨论】:
标签: django django-templates django-views