Отношения "один ко многим" не отображаются в админке

Я делал систему постов с двумя моделями Post и Image. Я хочу, чтобы в одном посте было несколько изображений

Вот мои модели

class Post(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    content = models.CharField(max_length=150, null=False)
    images = models.ManyToOneRel(
        field="image", to="Image", field_name="images")


class Image(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    image = models.ImageField()
    post = models.ForeignKey(
        Post, on_delete=models.CASCADE, related_name="images")

Когда я проверяю его в админке, поле изображений не отображается.

admin

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

Вы хотите только одно отношение, на мой взгляд, иностранный ключ лучше

Просто попробуйте это:-

class Post(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
content = models.CharField(max_length=150, null=False)
image=models.ForeignKey(Image,on_delete=models.SET_NULL,null=True)


class Image(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
image = models.ImageField()

Примечание:- 'Иностранный ключ сам по себе является отношением многие-к-одному'

Вы путаете отношение с полем модели. Если вы хотите указать отношение "многие к одному", вы делаете это с помощью ForeignKey, а не ManyToOneRel. Таким образом, это должно выглядеть так:

class Post(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    content = models.CharField(max_length=150, null=False)
    image = models.ForeignKey(to='Image', on_delete=models.CASCADE)!

Вероятно, вас интересует не отношение "многие-к-одному", а отношение "один-ко-многим" (когда один пост может содержать ноль, один или более Image). В этом случае ForeignKey принадлежит модели Image, и вы, таким образом, устанавливаете это при создании нового объекта Image в ModelAdmin:

Вернуться на верх