我试图弄清楚如何在Django和Postgresql中添加外键数组。
基本上,我的目标是能够为任何产品分配多个类别。
我的Category
字段的Postgres表如下:
(Id, Name)
(1, 'Adventure')
(2, 'Family')
Product
表的结构如下:
(Id, Title, Slug, Description, Image, Category_id)
(95678, 'My Title', 'my-title', 'Lorem Ipsum ahgdg iahdid iahdia duaw', 'www.dummyimage.com/600x500/ffff', 1)
现在,我找不到这样的方法可以在Category_id字段内添加多个值(id)而不会出现错误:
(Id, Title, Slug, Description, Image, Category_id)
(95678, 'My Title', 'my-title', 'Lorem Ipsum ahgdg iahdid iahdia duaw', 'www.dummyimage.com/600x500/ffff', array[1, 2])
那么我怎么可能解决呢?我尝试用ForeignKey
甚至用ArrayField
替换ManytoManyField
字段,但仍然无法正常工作。
我的代码当前如下所示:
Models.py
from django.db import models
from django.urls.base import reverse
class Category(models.Model):
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class Product(models.Model):
title = models.CharField(max_length=255, default='')
slug = models.SlugField(null=True, blank=True, unique=True, max_length=255, default='')
description = models.TextField(default='')
image = models.ImageField(default='')
category = models.ForeignKey(Category, related_name='category', default='', on_delete=models.SET_DEFAULT)
def get_absolute_url(self):
return reverse('product',
kwargs={'slug': self.slug})
def __str__(self):
return self.title
谢谢您的帮助。