如何在Django中制作外键数组-Postgresql

时间:2019-04-30 20:44:45

标签: python arrays django django-models foreign-keys

我试图弄清楚如何在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

谢谢您的帮助。

0 个答案:

没有答案