#python #django #signals
Вопрос:
У меня есть models.py
class Stream(models.Model):
following = models.ForeignKey(User, on_delete=models.CASCADE,
related_name='stream_following')
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
date = models.DateTimeField()
и функции
def add_post(sender, instance, *args, **kwargs):
post = instance
user = post.user
followers = Follow.objects.all().filter(following=user)
for follower in followers:
stream = Stream(post=post, user=follower.follower, date=post.posted, following=user)
stream.save()
когда я пытаюсь командовать py manage.py макемиграции
У меня есть проблема.
Вы пытаетесь добавить поле «post», не допускающее значения null, в поток без значения по умолчанию; мы не можем этого сделать (базе данных нужно что-то для заполнения существующих строк). Пожалуйста, выберите исправление:
- Теперь укажите одноразовое значение по умолчанию (будет установлено для всех существующих строк со значением null для этого столбца)
- Закройте, и позвольте мне добавить значение по умолчанию в models.py Выберите один из вариантов:
Как это решить? Я поставил smth по умолчанию. Однако в функции add_post я добавил дату=сообщение.опубликовано Спасибо!
Ответ №1:
вероятно, вы изменили свои модели, пока в них уже есть данные
вы могли бы выбрать либо:
a. удалите данные из этой модели и повторно выполните миграцию,или
б. удалите миграции и файлы sqlite и повторите миграции,или
c. выберите «Предоставить одноразовое значение по умолчанию сейчас», набрав 1, и просто добавьте случайный существующий идентификационный номер(но это может испортить ваши данные), или
d. добавьте пробел=True,null=True ко всем полям в ваших моделях и повторите миграцию,
Комментарии:
1. Спасибо, братан, я выбрал b (удалить миграции), и теперь это работает.
2. рад помочь :), вы можете принять приглашение и/или проголосовать за него,