2014-03-11 4 views
4

Я раньше пользовался ForeignKey.Django get_or_create и ManytoManyField

Модель

class Phone_request_list(models.Model): 
    who = models.IntegerField(null=True) 
    whose = models.ForeignKey(User) 

Посмотреть

def phone_request(request): 
    user_id = request.user.id 
    uuid = request.GET.get('uuid') 
    profile_id = profiles.objects.get(uuid=uuid).user_id 
    p,created = Phone_request_list.objects.get_or_create(who=user_id,whose_id=profile_id) 
    p.save() 

, но теперь я хочу изменить свою модель, чтобы manytomany полю

class Phone_request_list(models.Model): 
    who = models.IntegerField(null=True) 
    whose = models.ManyToManyField(User) 

На этот раз, как я могу проверить whose с who в get_or_create. Пожалуйста, помогите мне.

ответ

3
def phone_request(request): 
    user_id = request.user.id 
    uuid = request.GET.get('uuid') 
    profile_id = profiles.objects.get(uuid=uuid).user_id 
    p,created = Photo_request_list.objects.get_or_create(who=user_id) 
    p.whose.add(profiles.objects.get(uuid=uuid)) 
    p.save() 

Кстати, вам не нужно, что окончательное P.SAVE(), когда вы использовали ForeignKey, но вы сейчас у вас есть M2M

+1

Вы уверены, что о необходимости '.save()' после добавления в m2m? Я пытаюсь это прямо сейчас, и это не похоже, что это важно. – Hybrid

+1

В момент написания я, казалось, так думал. Возможно, более поздние версии не требуют сохранения –

Смежные вопросы