python - 如何在 django templatetag 中传递参数或调用表单中的有效形式,就像在视图中一样?
问题描述
嗨,伙计们,我想添加 CreateView 以便可以访问我的所有网页,所以我选择了模板标签,它可以很好地显示表单,但无法保存。我相信是因为我希望在保存表单之前自动添加的用户字段。在 Views.py 中非常简单。
class BusinessCreate(LoginRequiredMixin, CreateView):
model = Business
form_class = BusinessAddForm
template_name = 'business/form.html'
def form_valid(self, form):
form.instance.user = self.request.user # this is what i want to add in templatetags
messages.success(self.request, 'successfully created your biashara')
return super().form_valid(form)
这是我的 form.py
class BusinessAddForm(ModelForm):
logo = forms.ImageField(label='', required=False, widget=forms.FileInput(attrs={'placeholder': 'your logo'}))
description = forms.Field(label='', widget=forms.Textarea(attrs={'placeholder': 'Describe your biashara'}))
name = forms.CharField(label='', widget=forms.TextInput(attrs={'placeholder': 'Your biashara name'}))
email = forms.EmailField(label='', required=True, widget=forms.TextInput(attrs={'placeholder': 'Email'}))
class Meta:
model = Business
fields = (
'name', 'logo', 'email', 'description')
现在我有一个模板标签 templatetags/business.py
from django.template import Library
from business.forms import BusinessAddForm
register = Library()
@register.inclusion_tag('includes/business_form.html', takes_context=True)
def get_business_form():
form = BusinessAddForm()
return {
'form': form,
}
这可以很好地呈现表单但不保存。虽然没有错误。那么在哪里可以将当前登录的用户添加到用户字段?
我的模型.py
class Business(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=200, blank=True, null=True)
user = models.ForeignKey(User, related_name='added_by', on_delete=models.PROTECT)
logo = models.ImageField(upload_to="business/logos", blank=True, null=True)
email = models.EmailField(help_text="This is required")
description = models.TextField(blank=True, null=True)
提前谢谢大家
解决方案
推荐阅读
- java - 回到开始而不杀死Java中的程序
- versioning - Nexus 中的存档工件
- c# - WPF - 在启动进度条显示完成之前加载主窗口,完成后启动窗口不会关闭
- c# - 无法从根提供商解析范围服务“Microsoft.AspNetCore.Identity.UserManager`1[IdentityServerSample.Models.ApplicationUser]”
- angular - 如何获取基类(Angular2+)中的派生类名?
- java - 从列表生成列表
- android - Material Design 2 的弹出菜单
- android-studio - 为什么 JBehave 测试在 Android Studio 单元测试文件夹中运行,但在集成测试文件夹中失败?
- java - 完成后从平面图中获取两个可观察的结果
- mysql - 由于迁移优先级,错误 1005 laravel