【问题标题】:How to present multiple categories options in a single django model field如何在单个 django 模型字段中显示多个类别选项
【发布时间】:2019-05-14 13:48:39
【问题描述】:

我正在尝试设置一个 Django 模型,并且我想要一个名为 categories 的特定字段,以包含一个选项列表,该列表将作为用户可以选择的选项列表呈现给前端。

我是 Django 和 python 的新手,我真的不知道如何解决这个问题。

from django.conf import settings

from django.db import models


class Profile(models.Model):
    user                    = models.ForeignKey(user, on_delete=models.CASCADE)
    Bio                     = models.TextField(blank=False)
    personalWebsiteURL      = models.URLField(blank=True)
    personalWebsiteName     = models.URLField(blank=True)

    categories = **model needed here**


    def __str__(self):
        return self.details or ""

我希望类别的选项来自后端或模型,这是一长串类别。我希望将类别列表或选项保存为模型字段。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    如果您想要一个很长的列表并且会经常更改,那么您最好创建一个类别模型并为此使用 ForeignKey。

    class Category(models.Model):
        title = models.CharField(...)
        slug = models.SlugField(...)
    
    class Profile(models.Model):
        ...
        category = models.ForeignKey(Category, on_delete=models.CASCADE)
    

    如果类别列表是固定的(或不经常更新),您可以使用choices

    class Profile(models.Model):
        ...
        CATEGORIES = (
            (1, 'Category one'),
            (2, 'Category two'),
            (3, 'Category three'),
            ...
        )
        category = models.IntegerField(choices=CATEGORIES)
    

    【讨论】:

    • 有没有办法同时使用外键和选项?如果我计划随着时间的推移添加更多类别,那么选择仍然是一个不错的选择吗?
    • 据我所知,没有办法在同一个字段中使用 FK 和选项,如果您继续添加类别,您仍然可以使用选项,但您每次都需要更改代码那个。
    • 为了更好地理解,我想成为将来添加到后端类别中的人,而不是用户。用户只是从提供给他们的类别中进行选择。所以按照你说的,外键是完美的吗?
    • FK 会更好也更容易添加类别,因为您(作为管理员)可以去 Django 管理员并添加类别。但是,如果您(作为开发人员)将是唯一一个添加类别的人,那么选择也会起作用,但在这种情况下,您需要打开您的代码库并手动添加它们。所以,我会说选择 FK。
    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 2023-01-30
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    相关资源
    最近更新 更多