Django Формы соединяют две формы как одну, где одна является FK с другой - PullRequest
0 голосов
/ 09 мая 2020

У меня два класса. Типы и материалы. Мне нужно создать форму только для УНИКАЛЬНЫХ типов. Он создаст тип, и этот тип будет напрямую 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>

Как заполнить просмотры ??

...