Отображение «поддельных» имен групп запросов в форме модели Django - SelectMultiple - PullRequest
0 голосов
/ 29 октября 2018

Здравствуйте, я младший 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 (), но он обновил базу данных. Мне просто нужно отобразить это правильно ... без изменений базы данных, но я не знаю, что я могу сделать больше, чтобы исправить это: (

Буду признателен за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...