Как представить несколько вариантов категорий в одном поле модели Django - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь настроить модель Django, и я хочу, чтобы определенное поле под названием категории содержало список опций, которые будут отображаться во внешнем интерфейсе в виде списка опций, из которых пользователь может выбирать.

Я новичок в 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 ""

Я хочу, чтобы опции для категорий приходили из бэкэндаили модель, которая представляет собой длинный список категорий.И я хочу, чтобы список категорий или опции были сохранены как поле модели.

1 Ответ

1 голос
/ 14 мая 2019

Если вам нужен длинный список, и он будет меняться довольно часто, вам лучше создать модель категории и использовать для этого 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)
...