дать два варианта в Django, не создавая другой класс и иностранный ключ - PullRequest
1 голос
/ 08 июня 2019

скажем, я хочу, чтобы у каждого сообщения была категория, но я знаю, что будет только две категории. Я не хочу создавать другую модель с именем class category и использовать ее для внешних целей. Есть ли другой способ сделать это? в каждом сообщении есть категория 1 или категория 2. Я хочу поставить этот выбор в поле пост-модели.

1 Ответ

1 голос
/ 08 июня 2019

django имеет field.choices, вы можете использовать его в своей существующей модели.Этот пример взят из django docs https://docs.djangoproject.com/en/2.2/ref/models/fields/

YEAR_IN_SCHOOL_CHOICES = [
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
]

здесь первое значение для ex 'FR' является значением, которое будет установлено в качестве значения переменной, а второе значение 'Freshman' является читаемым человеком значениемчто вы увидите, так что если вы выберете «Freshman», то переменная будет содержать значение «FR», каждый кортеж представляет выбор, в вашем случае у вас будет только два кортежа.

вот пример для использованияfield.choices из django.db импортировать модели

class Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    YEAR_IN_SCHOOL_CHOICES = [
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
    ]
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )

    def is_upperclass(self):
        return self.year_in_school in (self.JUNIOR, self.SENIOR)

Проверить django field.choices https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.Field.choices

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...