Здравствуйте, я младший Django Dev Я буду признателен за любую помощь!
У меня есть такие группы Django:
"Супер группа", "Мега группа", "test_1", "test_2", "test_7", "Nice
группа "," test_16 "(....)
Группы test_X связаны через X (id) с другой моделью, которая содержит ее название. Это означает, что я могу сделать что-то вроде этого:
x = Groups.objects.get(pk=6) # getting group of name "test_6"
x.rel_group.title # shows "Super title" instead of "test_6"
У меня есть менеджер, который меняет имена групп test_X на заголовки связанных объектов и возвращает специально подготовленный набор запросов ... просто для правильного отображения без изменения базы данных:
class AllGroupsManager(models.Manager):
def get_queryset(self):
queryset = super(AllGroupsManager, self).get_queryset().exclude(rel_group__start_date__lte=datetime.now()-timedelta(days=3))
for number, t in enumerate(queryset):
if 'test_' in t.name:
t.name = t.rel_group.title
return queryset
Это моя модель формы:
class TestForm(forms.ModelForm):
class Meta:
model = Test
fields = (
'title', 'price', 'body', 'group',
)
widgets = {
'title': forms.TextInput(attrs={'class': 'form-control'}),
'price': forms.NumberInput(attrs={'class': 'form-control', 'min': 0.0}),
'body': forms.Textarea(attrs={'class': 'form-control'}),
'group': forms.SelectMultiple(attrs={'class': 'form-control chosen', 'data-placeholder': 'Wybierz grupę'}),
}
def __init__(self, *args, **kwargs):
super(TestForm, self).__init__(*args, **kwargs)
self.fields['group'].queryset = Group.get_all.all() # using my manager here
print(self.fields['group'].queryset) # I can see that all group names are changed from test_X to specyfic names like "Great name"
Внутри него я использую свой менеджер для 'набора полей группы' (он имеет виджет SelectMultiple), поэтому я получаю подготовленный набор запросов с измененными именами.
Я печатаю этот набор запросов внутри, чтобы проверить, все ли в порядке.
И это ... все имена test_x заменены на заголовки связанных объектов.
Итак, я создаю эту форму и распечатываю ее для проверки:
form = TestForm()
print(form)
И я вижу, что все специально подготовленные имена групп, которые я распечатывал при подготовке формы, сбрасываются в "test_X" ...
Понятия не имею, когда и почему происходит сброс ...
Перед этим я попытался с помощью метода запросов .update (), но он обновил базу данных. Мне просто нужно отобразить это правильно ... без изменений базы данных, но я не знаю, что я могу сделать больше, чтобы исправить это: (
Буду признателен за любую помощь!