невозможно импортировать модели: для комментариев - PullRequest
0 голосов
/ 22 апреля 2020

я пытаюсь импортировать модели комментариев, но при переносе получаю ошибку

мой код

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from PIL import Image
from django.urls import reverse

class Post(models.Model):
     title= models.CharField(max_length=100)
    img = models.ImageField(upload_to='pics')
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author= models.ForeignKey(User,on_delete=models.CASCADE)

   def __str__(self):
       return self.title

  def get_absolute_url(self):
       return reverse('User-Posts-Details', kwargs={'pk': self.pk})

 class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=300)
image = models.ImageField(default='default.jpg',upload_to='profile_pics')

def __str__(self):
    return f'{self.user.username} Profile'

def save(self):
    super().save()

    img = Image.open(self.image.path)

    if img.height > 300 or img.width > 300:
        output_size = (300,300)
        img.thumbnail(output_size)
        img.save(self.image.path)

 class Comments(models.Model):
     Post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
     user_id = models.ForeignKey(User,on_delete=models.CASCADE,default=True)
     comment = models.TextField()
     commented = models.DateTimeField(default=timezone.now)

ошибка: - django .db.utils.IntegrityError : Строка в таблице 'userpost_comment' с первичным ключом '1' имеет недопустимый внешний ключ: userpost_comment.author_id содержит значение 'sd', которое не имеет соответствующего значения в auth_user.id.

1 Ответ

0 голосов
/ 22 апреля 2020

В соответствии с предложенной ошибкой миграции в базе данных нет auther_id против sd. Чтобы это исправить, сначала вам нужно удалить ваш последний файл миграции, который был создан при запуске команды makemigrations.

Тогда есть две опции:

1. Измените поле пользователя, чтобы оно стало пустым:

class Comments(models.Model):
     post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
     user = models.ForeignKey(User,on_delete=models.CASCADE,null=True, default=None)

Тогда вы можете выполните команду makemigrations и migrate. Но недостатком этого решения является то, что оно сделает пользовательское поле обнуляемым.

2. Добавьте значение по умолчанию в user к целому числу, которое является существующим первичным ключом из вашей базы данных:

class Comments(models.Model):
     post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
     user = models.ForeignKey(User,on_delete=models.CASCADE, default=1)

Затем запустите makemigrations и migrate, чтобы добавить изменения в базу данных.

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