Die Entwicklung verläuft im gleichen Tempo wie zuvor, aber ich konnte nichts posten.
Dieses Mal werde ich bei der Registrierung versuchen, nur das Geschäft auszuwählen, zu dem ich gehöre. Dies soll verhindern, dass Sie versehentlich eine gewünschte Schicht auswählen, wenn Sie eine gewünschte Schicht registrieren, obwohl Sie nur zu Pu-a-Pu gehören.
Vor der Korrektur
Als ich es nachgeschlagen habe, konnte ich damit umgehen, indem ich forms.py und Ansichten hinzufügte.
views.py
def get_form_kwargs(self):
kwargs = super(KibouCreate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
Ich habe das Bild nicht erfasst, weil ich es selbst mache, aber wenn ich die Formularinformationen erhalte, stelle ich mir vor, dass ich meine eigenen Informationen weitergeben, das Ergebnis vom Formular verarbeiten und an HTML zurücksenden werde. Ich werde.
forms.py
class kibouCreateForm(forms.ModelForm):
class Meta:
shift_object = Shift.objects.all()
model = KibouShift
fields = ('user', 'date', 'shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3', 'shift_name_4', 'shisetsu_name_4')
widgets = {
'date': datetimepicker.DatePickerInput(
format='%Y-%m-%d',
options={
'locale': 'ja',
'dayViewHeaderFormat': 'JJJJ Jahr MMMM',
'ignoreReadonly': True,
'allowInputToggle': True,
}
),
}
def __init__(self, *args, **kwargs):
#Es kann nur die Zugehörigkeitsliste ausgewählt werden
user = kwargs.pop('user')
UserShozoku_list = UserShozokuModel.objects.filter(user = user.id).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
super(kibouCreateForm, self).__init__(*args, **kwargs)
self.fields['shisetsu_name_1'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_2'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_3'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_4'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
"""
Fristprüfung
"""
def clean_date(self):
dt_now = datetime.datetime.now()
dt_date = self.cleaned_data.get('date')
#Geben Sie erst nach dem 20. als 5. ein
if dt_now.day > 5:
startdate = datetime.date(dt_now.year,dt_now.month,20) + relativedelta(months=1)
if dt_date < startdate:
raise forms.ValidationError(
"Die Frist ist abgelaufen. Bitte wenden Sie sich an den Administrator.",
)
else:
startdate = datetime.date(dt_now.year,dt_now.month,20)
if dt_date < startdate:
raise forms.ValidationError(
"Die Frist ist abgelaufen. Bitte wenden Sie sich an den Administrator.",
)
return self.cleaned_data.get('date')
def clean(self):
############
#überprüfen
############
dt_user = self.cleaned_data.get('user')
dt_date = self.cleaned_data.get('date')
if KibouShift.objects.filter(user=dt_user, date=dt_date).count() > 0:
raise forms.ValidationError("Ich kann mich nicht registrieren, da die gewünschte Schicht am selben Tag bereits registriert wurde. Bitte korrigiere es.")
dt_shift_name1 = self.cleaned_data.get('shift_name_1')
dt_shift_name2 = self.cleaned_data.get('shift_name_2')
dt_shift_name3 = self.cleaned_data.get('shift_name_3')
dt_shift_name4 = self.cleaned_data.get('shift_name_4')
dt_shisetsu_name_1 = self.cleaned_data.get('shisetsu_name_1')
dt_shisetsu_name_2 = self.cleaned_data.get('shisetsu_name_2')
dt_shisetsu_name_3 = self.cleaned_data.get('shisetsu_name_3')
dt_shisetsu_name_4 = self.cleaned_data.get('shisetsu_name_4')
#Wenn die Schicht geschlossen ist, bleibt die Einrichtung leer
if str(dt_shift_name1) == "Geschlossen" or str(dt_shift_name1) == "Ja" or str(dt_shift_name1) == "Nicht":
if dt_shift_name2 != None or dt_shift_name3 != None or dt_shift_name4 != None or dt_shisetsu_name_1 != None or dt_shisetsu_name_2 != None or dt_shisetsu_name_3 != None or dt_shisetsu_name_4 != None:
raise forms.ValidationError("Für die Schichten "Urlaub", "Ja" und "Nein" ist keine weitere Eingabe erforderlich.")
Dann
Es ist jetzt nur die Einrichtung, zu der ich gehöre.
Übrigens möchte ich die Benutzerauswahl nur für diejenigen ermöglichen, die die Berechtigung haben, Zeitpläne hinzuzufügen.
Ich habe nur ein bisschen hinzugefügt. Trotzdem habe ich es ungefähr eine Stunde lang recherchiert und implementiert (lacht)
Ursprünglich denke ich, dass es am besten ist, für jeden ausgewählten Benutzer eine Einrichtung auswählen zu können, aber es ist notwendig, beispielsweise eine Implementierung mit Javascript oder das Abrufen per Knopfdruck zu entwickeln.
Sie müssen Ihre Fähigkeiten in Zukunft verbessern.
forms.py
def __init__(self, *args, **kwargs):
#Es kann nur die Zugehörigkeitsliste ausgewählt werden
user = kwargs.pop('user')
UserShozoku_list = UserShozokuModel.objects.filter(user = user.id).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
super(kibouCreateForm, self).__init__(*args, **kwargs)
self.fields['shisetsu_name_1'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_2'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_3'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_4'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
#Es ist besser, für jeden ausgewählten Benutzer zu ändern, aber es ist notwendig, Java-Skript oder -Schaltfläche zu erhalten und damit zu arbeiten
#Ändern Sie die Benutzerauswahl, wenn Sie zum Hinzufügen eines Zeitplans berechtigt sind
permissions = Permission.objects.filter(user=user)
if user.has_perm('schedule.add_KibouShift'):
self.fields['user'].queryset = CustomUser.objects.all()
else:
self.fields['user'].queryset = CustomUser.objects.filter(username=user.username).all()
Ich habe es übrigens in CustomUser anstelle des ursprünglich vorbereiteten Benutzerobjekts geändert. Ich habe die Datenbank gelöscht und von vorne begonnen, sodass die Daten gleich wurden.
Recommended Posts