Я создал две модели, Порумбей и Перечи.Порумбей означает голубь, и это может быть мужчина или женщина, они живут парами (перечи).Мои модели ниже (часть этого)
class Gender(models.Model):
sexul = models.CharField(max_length=20, null=False, blank=False)
def __str__(self):
return self.sexul
class Porumbei(models.Model):
....
serie_inel = models.CharField(....)
sex = models.ForeignKey(Gender, on_delete=models.CASCADE)
....
class Perechi(models.Model):
....
mascul = models.ForeignKey(Porumbei, on_delete=models.CASCADE)
femela = models.ForeignKey(Porumbei, on_delete=models.CASCADE)
My form:
class AdaugaPereche(forms.Form):
boxa = forms.IntegerField(label="Boxa", min_value=1)
sezon = forms.CharField(label="Sezon reproducere", initial=datetime.now().year)
mascul = forms.ChoiceField(choices=Porumbei.objects.filter(sex__sexul="Mascul", perechi_masculi__isnull=True), label="Mascul")
femela = forms.ChoiceField(choices=Porumbei.objects.filter(sex__sexul="Femelă", perechi_femele__isnull=True), label="Femela")
serie_pui_1 = forms.CharField(label="Serie pui 1")
serie_pui_2 = forms.CharField(label="Serie pui 2")
culoare_pui_1 = forms.ChoiceField(choices=CuloriPorumbei.objects.all(), label="Culoare pui 1")
culoare_pui_2 = forms.ChoiceField(choices=CuloriPorumbei.objects.all(), label="Culoare pui 2")
data_imperechere = forms.DateField(label="Dată împerechere")
primul_ou = forms.DateField(label="Primul ou")
data_ecloziune = forms.DateField(label="Dată ecloziune")
data_inelare = forms.DateField(label="Dată inelare")
comentarii = forms.Textarea()
My view:
def perechenoua(request):
if request.method == "POST":
form = AdaugaPereche(request.POST)
if form.is_valid():
form.save()
return redirect("porumbei")
else:
form = AdaugaPereche()
context = {
'form': form
}
template = loader.get_template("adauga_pereche.html")
return HttpResponse(template.render(context, request))
The template:
<form method="post">{% csrf_token %}
<div class="form-group row">
<div class="col-sm-3">
{{ form.boxa|add_class:"form-control" }}
</div>
<div class="col-sm-3">
{{ form.sezon|add_class:"form-control" }}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
{{ form.mascul|add_class:"form-control custom-select d-block w-100" }}
</div>
<div class="col-sm-3">
{{ form.femela|add_class:"form-control custom-select d-block w-100" }}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
{{ form.serie_pui_1|add_class:"form-control" }}
</div>
<div class="col-sm-3">
{{ form.serie_pui_2|add_class:"form-control custom-select d-block w-100" }}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
{{ form.culoare_pui_1|add_class:"form-control custom-select d-block w-100" }}
</div>
<div class="col-sm-3">
{{ form.culoare_pui_2|add_class:"form-control custom-select d-block w-100" }}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
{{ form.data_imperechere }}
</div>
<div class="col-sm-3">
{{ form.primul_ou }}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
{{ form.data_ecloziune }}
</div>
<div class="col-sm-3">
{{ form.data_inelare }}
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
{{ form.comentarii }}
</div>
</div>
</form>
Когда я создаю новую Perechi (пару), мужское поле, я хочу быть отсортированным со всеми мужчинами в Порумбее (голуби), и как только он был добавлен впары, в следующий раз при добавлении пар этого мужчины следует исключить из списка, поскольку у него уже есть пара.То же самое с женщиной.Как я могу это реализовать?