Джанго формирует экземпляр - PullRequest
0 голосов
/ 07 июня 2010

У меня есть метод, при котором я сохраняю данные от пользователей, но у каждого пользователя должен быть один профиль, поэтому каждый раз, когда он сохраняет, данные должны быть перезаписаны. сначала я проверяю, есть ли у него данные профиля, и в этом случае я добавляю экземпляр в форму. если нет, (это его первая регистрация), я просто добавляю данные в БД мой код: но я получаю сообщение об ошибке: «QuerySet» объект не имеет атрибута «_meta» мой метод правильный? Спасибо!

def save_userprofile (запрос):

   if request.method == 'POST':
        u = UserProfile.objects.filter(created_by = request.user)
        if u:

             form = UserProfileForm(request.POST, request.FILES,instance=u ) 
        else:
             form = UserProfileForm(request.POST, request.FILES)

Ответы [ 2 ]

4 голосов
/ 07 июня 2010

Если вы ожидаете от запроса только один объект, вам следует использовать метод get () .

from django.core.exceptions import ObjectDoesNotExist
try:
    u = UserProfile.objects.get(created_by = request.user)
    # can update here
except ObjectDoesNotExist:
    # create object

Ссылка на набор запросов должна объяснить все. Вы также можете найти get_or_create () полезным.

1 голос
/ 07 июня 2010

Аргумент instance UserProfileForm не ожидает получения QuerySet, что вы и даете. Чтобы получить профиль, вы должны использовать его, который возвращает один UserProfile объект:

u = UserProfile.objects.get(created_by = request.user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...