Django: сохранить новое значение в ManyToManyField - PullRequest
0 голосов
/ 31 августа 2009

Я подробно рассказал о своем коде: я не знаю, почему моя таблица пуста (кажется, что она была пуста после вызова save_model, но я не уверен).

class PostAdmin(admin.ModelAdmin):
    def save_model(self, request, post, form, change):
        post.save()

        # Authors must be saved after saving post
        print form.cleaned_data['authors'] # []
        print request.user # pg
        authors = form.cleaned_data['authors'] or request.user
        print authors # pg
        post.authors.add(authors)

        print post.authors.all() # [<User: pg>]

        # But on a shell, table is empty. WTF ?! : 
        # select * from journal_post_authors;
        # Empty set (0.00 sec)

Ответы [ 3 ]

2 голосов
/ 31 августа 2009

Вам нужно снова сохранить пост, после post.authors.add (авторы).

1 голос
/ 01 сентября 2009

Я нашел решение. Я только что изменил значение в cleaned_data, и оно работает:

if not form.cleaned_data['authors']:
    form.cleaned_data['authors'] = [request.user]

Спасибо, что помогли мне. :)

0 голосов
/ 31 августа 2009

Я не знаю, какое поле вы используете, но разве там не должно быть где-нибудь из них? (или что-то подобное)

author = form.cleaned_data['authors']
User.objects.get(id=author)
...