【发布时间】:2019-05-24 18:13:16
【问题描述】:
我创建了两个模型,Porumbei 和 Perechi。 Porumbei的意思是鸽子,它可以是雄性或雌性,它们成对生活(Perechi)。下面是我的模型(部分)
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(pair) 时,我想将字段 mascul 与 Porumbei(pigeons) 中的所有雄性进行排序,一旦它被添加到对中,下次添加要排除的雄性对时列出,因为它已经有对。与女性相同。我该如何实现?
【问题讨论】:
-
在性别模型中你有字段名吗?男性/女性写在哪里?
-
其中提供了哪些值?
-
我刚刚编辑了带有性别类别的帖子。
-
同性恋对呢? ;-)
-
在繁育鸽子时,拥有同性恋配对是没有效率的。 :)