Получение текущего пользователя logged_in в Django - PullRequest
1 голос
/ 17 декабря 2010

Я разрабатываю блог с Django и хочу, чтобы мои посты были связаны с их автором.Я создал поле автора в своем классе модели Blog, который представляет собой ForeignKey, указывающий на объект User.Проблема в том, что инструмент django для миграции баз данных на юг запрашивает у меня значение по умолчанию.На самом деле, я бы хотел, чтобы это был идентификатор зарегистрированного пользователя, который редактировал сообщение, но не может понять, как это сделать.Любая идея?

Это мой класс модели блога:

class Blog(models.Model):
PUBLISHING_STATUS = (
    ('P', 'Published'),
    ('D', 'Draft'),
    ('AA', 'Awaiting Approval'),
    )
title = models.CharField(max_length=128, unique=True)
slug = models.SlugField(max_length=160, unique=True)
header_image = models.ImageField(upload_to='images/uploaded', max_length=256, null=True)
body = models.TextField()
author = models.ForeignKey(User)
status = models.CharField(max_length=2, choices=PUBLISHING_STATUS, null=True)
posted = models.DateTimeField('date posted')
category = models.ForeignKey('blog.Category')
tags = models.ManyToManyField('blog.Tags')

def __unicode__(self):
    return self.title

def get_absolute_url(self):
    return '/blog/%s/view_post' % self.slug

Спасибо!

Ответы [ 3 ]

3 голосов
/ 17 декабря 2010

Если вы хотите, чтобы поле было обязательным, вам нужно будет установить значение по умолчанию при переносе.По той причине, что вы нигде не сохранили данные о том, кто создал пост, вы можете установить его только для конкретного пользователя, который в этом случае, вероятно, должен быть вашим администратором!

Затем вы можете отредактироватьпосты в админке и при необходимости установите для них правильного автора!

Если вы ищете способ автоматического заполнения поля при сохранении нового поста в админке, вам необходимо переопределить save_model метод на вашем ModelAdmin:

class BlogPostAdmin(model_admin):   

    def save_model(self, request, instance, form, change):
        user = request.user 
        instance = form.save(commit=False)
        if not change or not instance.author:
            instance.author = user
        instance.save()
        form.save_m2m()
        return instance
1 голос
/ 17 декабря 2010

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

Почему?Потому что у вас есть старые данные, которые вы пытаетесь сохранить?Возможно, вам не следует пытаться сохранить старые данные.

На самом деле, я бы хотел, чтобы это был идентификатор зарегистрированного пользователя, который редактировал сообщение, но не может понять, как это сделать.сделай это.Есть идеи?

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

0 голосов
/ 17 декабря 2010

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

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