【发布时间】:2022-01-08 19:48:28
【问题描述】:
您好,我在 django 中遇到了一些过滤器问题。 我有自己的观点,我可以在其中选择星期几,这是一个选择字段 一旦选择它就会保存在数据库中。 如果我不得不选择另一天,我想过滤那些已经在场的人,以免重复他们。 谁能帮帮我?
models.py
class Piano(models.Model):
nome_piano = models.CharField(max_length=100)
data_inizio = models.DateField()
data_fine = models.DateField()
utente_piano = models.ForeignKey(
User,
on_delete = models.CASCADE,
related_name = 'utente_piano'
)
def __str__(self):
return self.nome_piano
class Meta:
verbose_name = "Piano alimentare"
verbose_name_plural = "Piani alimentari"
class PianoSingleDay(models.Model):
giorni_settimana_scelta = [
("1","Lunedì"),
("2","Martedì"),
("3","Mercoledì"),
("4","Giovedì"),
("5","Venerdì"),
("6","Sabato"),
("7","Domenica")
]
giorni_settimana = models.CharField(
choices = giorni_settimana_scelta,
max_length = 300
)
single_piano = models.ForeignKey(
Piano,
on_delete = models.CASCADE,
related_name = 'single_piano'
)
def __str__(self):
return self.giorni_settimana
class Meta:
verbose_name = "Piano singolo"
verbose_name_plural = "Piani singoli"
views.py
@login_required
def PianoSingleView(request, id):
piano = get_object_or_404(models.Piano, id = id, utente_piano = request.user)
if request.method == 'POST':
giorno_form = PianoSingleDayForm(request.POST, prefix = 'giorno')
if giorno_form.is_valid():
day_piano = giorno_form.save(commit = False)
day_piano.single_piano = piano
day_piano.save()
return redirect('gestione-piano', id = piano.id)
else:
giorno_form = PianoSingleDayForm(prefix = 'giorno')
context = {'piano': piano, 'giorno_form': giorno_form}
return render(request, 'crud/create/gestione_piano_single.html', context)
forms.py
class PianoSingleDayForm(forms.ModelForm):
class Meta:
model = models.PianoSingleDay
exclude = ['single_piano']
1
2
【问题讨论】:
-
所以
single_piano只能在PianoSingleDay中出现一次?还是我错过了什么?或者PianoSingleDay可以包含不同日期的single_piano吗? -
计划中可以有多个 PianoSingleDays 对应于选择的星期几。所以一个计划只能有像星期一这样的 1 天
-
通常情况已经如此:您只能选择一天。问题是:你能选择一天per
Piano吗? -
问题是我想添加一个新的一天(在不同的页面上,选择一个允许我还选择计划中已经存在的星期一)
-
所以您不希望
day_piano-giorni_settimana组合重复?
标签: django django-models django-views django-forms