Вопрос о Django Доступ и сохранение пользователя Foriegnkey в моей модели - PullRequest
0 голосов
/ 14 марта 2011

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

Также следуют это сообщение в блоге .

Пример модели приведен ниже.

class Post (models.Model):
    name = models.CharField(max_length=1000, help_text="required, name of the post")
    description = models.TextField(blank=True)
    created_datetime = models.DateTimeField(auto_now_add=True, editable=False)
    modified_datetime = models.DateTimeField(auto_now=True, editable=False)
    custom_hashed_url = models.CharField(unique=True, max_length=1000, editable=False)

def save(self, *args, **kwargs):
        #How to save User here?
        super(Model, self).save()

Не возможно ли отправить текущего зарегистрированного пользователя в Модель перед вызовом save ()?

По мнению:

if request.method == 'POST':

if not errors:

    f = PostForm(request.POST)

    f.save()

1 Ответ

1 голос
/ 15 марта 2011

Учитывая, что вы пометили это как django-admin, я предполагаю, что вы хотите сохранить User, который изменяет объект через интерфейс администратора. (Вы не можете сделать это в методе сохранения вашей модели, потому что он не обязательно имеет доступ к объекту User - например, что если вы сохраняете объект из интерфейса оболочки?)

Чтобы сделать это в админке Django, просто переопределите save_model метод вашего ModelAdmin:

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

admin.site.register(Post, PostAdmin)

Конечно, вам нужно добавить ForeignKey с именем user к вашей модели, чтобы это работало ...

...