У меня два класса. Типы и материалы. Мне нужно создать форму только для УНИКАЛЬНЫХ типов. Он создаст тип, и этот тип будет напрямую FK для материала, который создается одновременно с типом.
class Type(models.Model):
TYPE_GENERIC = 'generic'
TYPE_UNIQUE = 'unique'
TYPE_CHOICES = (
(TYPE_GENERIC, 'generic'),
(TYPE_UNIQUE, 'unique'),
)
material_type = models.CharField(max_length=250, choices=TYPE_CHOICES, default=TYPE_GENERIC)
name_type = models.CharField(max_length=250)
description = models.TextField(blank=True)
creation_date_type = models.DateTimeField(auto_now_add=True)
class Material(models.Model):
name = models.CharField(max_length=250)
barcode = models.CharField(max_length=50)
#id=barcode
creation_date_mat = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(max_length=250, null=True, blank=True)
material_picture = models.ImageField(blank=True, upload_to='media/', default='None/no-img.jpg',
null=True)
type = models.ForeignKey(Type, on_delete=models.CASCADE)
Это мои формы:
# Formulaire d'Ajout Des Type De Materiels
class formType(forms.ModelForm):
class Meta:
model = Type
exclude = ['creation_date_type', 'material_type']
# Formulaire d'Ajout De Materiels Uniqrues
class formUnique(forms.ModelForm):
class Meta:
model = Material
fields = ['name','barcode', 'material_picture']
Мои взгляды ???
def addMaterial(request):
if not request.user.is_authenticated:
return redirect("../../accounts/login")
else:
if request.method == 'POST':
form = formMaterial(request.POST, request.FILES)
form_type = formType(request.POST)
form_unique = formUnique(request.POST)
if form.is_valid():
form.save()
form = formMaterial()
messages.success(request, f"New Material created")
return redirect("homepage")
else:
form = formMaterial()
form_type = formType()
form_unique = formUnique()
return render(request, 'siteWeb/addMaterial.html', {'form': form, 'form_type': form_type, 'form_unique': form_unique})
И моя форма:
<form method = "POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form_unique.as_p }}
<center>TYPE:</center>
{{ form_type.as_p }}
<br>
<button class="btn btn-dark" type = "submit">Submit Material</button>
</form>
Как заполнить просмотры ??