如何添加仅对新用户显示一次的表单,然后返回到常规表单



我想创建一个带有额外字段的表单:

这是常规形式的 models.py:

商店:

class Boutique(models.Model):
name = models.CharField(max_length=250)
user = models.ForeignKey(User, default=1)
logo = models.FileField(max_length=250)
def __str__(self):
return self.name

form.py :

class BoutiqueForm(forms.ModelForm):
class Meta:
model = Boutique
fields = ['name', 'logo']

Views.py :

def create_boutique(request):
if not request.user.is_authenticated():
return render(request, 'produit/login.html')
else:
form = BoutiqueForm(request.POST or None, request.FILES or None)
if form.is_valid():
boutique = form.save(commit=False)
boutique.user = request.user
boutique.logo = request.FILES['logo']
file_type = boutique.logo.url.split('.')[-1]
file_type = file_type.lower()
if file_type not in IMAGE_FILE_TYPES:
context = {
'boutique': boutique,
'form': form,
'error_message': 'Image file must be PNG, JPG, or JPEG',
}
return render(request, 'produit/create_boutique.html', context)
boutique.save()
return render(request, 'produit/detail.html', {'boutique': boutique})
context = {
"form": form,
}
return render(request, 'produit/create_boutique.html', context)

form_template.html :

{% for field in form %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<span class="text-danger small">{{ field.errors }}</span>
</div>
<label class="control-label col-sm-2">{{ field.label_tag}}</label>
<div class="col-sm-10">{{ field }}</div>
</div>{% endfor %}

我想添加一个包含 2 个额外字段boutique_commerçant facebook_link和企业......对于新注册用户来说,create_boutique.html只出现一次...

看看这个问题和答案。

您可以添加一个额外的字段,该字段默认为 False,如果保存了两个字段,则该字段设置为 True。这样,您可以检查信息是否存在,并且仅在不存在时才显示表单。

最新更新