Как предварительно заполнить модель Django - PullRequest
0 голосов
/ 06 июня 2019

Как:

class Article (models.Model):
    user = models.ForeignKey('User', related_name="articles")

    def __init___(self):
        self.user = 'Friendy'

1 Ответ

0 голосов
/ 06 июня 2019

Предполагая, что вы хотите добавить значение по умолчанию в поле user, существует два способа: либо простое значение на основе значений, либо вы можете использовать вызываемое по умолчанию. Документация для этого может быть найдена в https://docs.djangoproject.com/en/2.2/ref/models/fields/#default

Если вы хотите использовать по умолчанию определенного пользователя, вам нужно знать id пользователя, например:

class Article (models.Model):
    user = models.ForeignKey(
        'User', 
        related_name="articles", 
        default=1, 
        help_text="There better be a user with an id of 1 or this will not work",
    )

    def __init___(self):
        self.user = 'Friendy'

Другой способ - определить вызываемый объект, который возвращает идентификатор пользователя, например:

def get_first_user():
    user = User.objects.first()
    if user:
        return user.pk
    return None

class Article (models.Model):
    user = models.ForeignKey(
        'User', 
        related_name="articles", 
        default=get_first_user, 
        help_text="There better be a user with an id of 1 or this will not work",
    )

    def __init___(self):
        self.user = 'Friendy'

Причина, по которой мы возвращаем идентификатор, а не экземпляр пользователя, заключается в следующей строке в документации:

Для таких полей, как ForeignKey, которые отображаются на экземпляры модели, значения по умолчанию должны быть значением поля, на которое они ссылаются (pk, если не задано to_field), а не экземплярами модели.

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