fbpx

object has no attribute ‘get’

322 просмотра
0
0 Комментариев

Хочу написать функцию которая будет загружать данные из базы данные, потом вставлять их в форму и отправлять все это на рендер.

Представление:

def HouseEdit(request, id):
render_dict = dict()
try:
    get_house = House.objects.get(id = id)
except House.DoesNotExist:
    return pre_render( request, { 'HouseDoesNotExist': True } )
if request.user.is_authenticated() and request.user == get_house.user:
    render_dict.update({ 'HouseEdit': True })
    try:
        get_house_photo = HousePhoto.objects.filter(house=get_house)
    except HousePhoto.DoesNotExist:
        get_house_photo = False
    form = HouseAddForm(get_house)
    render_dict.update({ 'HouseAddForm': form })
    if get_house_photo:
        HousePhotoAddFormSet = formset_factory(HousePhotoAddForm)
        HousePhotoAddFormSet = HousePhotoAddFormSet()
        render_dict.update({ 'HousePhotoAddFormSet': HousePhotoAddFormSet })
return pre_render(request, render_dict)

Форма:

class HouseAddForm(forms.Form):
MONEY = (
         ('R', u'Рубли (Россия)'),
         ('U', u'Гривны'),
         ('B', u'Рубли (Белорусь)'),
         ('D', u'Доллары'),
         ('E', u'Евро'),
)
ROOM = (
        (1, u'1 комнатная'),
        (2, u'2 комнатная'),
        (3, u'3 комнатная'),
        (4, u'Многокомнатная'),
)
TYPE = (
        (1, 'Квартира'),
        (2, 'Комната'),
        (3, 'Частный дом'),
)
DURATION = (
            (4, u'На год'),
            (1, u'На день'),
            (2, u'На месяц'),
            (3, u'На полгода'),
            (5, u'Длительно'),
)
country = forms.ModelChoiceField(queryset=Country.objects.all(), empty_label=None)
city = forms.CharField(max_length=30, widget=forms.TextInput(attrs={'placeholder': u'Город'}))
district = forms.CharField(max_length=30, widget=forms.TextInput(attrs={'placeholder': u'Район'}))
metro = forms.CharField(max_length=30, widget=forms.TextInput(attrs={'placeholder': u'Метро'}))
 
street = forms.CharField(max_length=80, widget=forms.TextInput(attrs={'placeholder': u'Улица'}))
houses = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': u'Корпус'}))
home = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': u'Дом №'}))
level = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': u'Этаж'}))
 
type = forms.ChoiceField(choices=TYPE)
room = forms.ChoiceField(choices=ROOM)
area = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': u'Площадь кв.м.'}))
 
price = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': u'Цена'}))
money = forms.ChoiceField(choices=MONEY)
 
desc = forms.CharField(max_length=4000, widget=forms.Textarea(attrs={ 'class': 'add_desc', 'placeholder': u'Описание'}))
duration = forms.ChoiceField(choices=DURATION)
phone = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': u'Контактный телефон'}))

Но почему-то возвращается ошибка — метод get не найден.
Пробовал писать через instance, но пишет, что передан неверный аргумент. Что делать?


Добавить комментарий

1 Ответы

Python Опубликовано 16.07.2019
0

HouseAddForm(get_house)

Форма ожидает что ей дадут dict а вы передаете объект.

С instance тоже ошибка потому что форма у вас унаследована forms.Form а не forms.ModelForm

Перепишите форму с использование modelforms и используйте instance

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up