Джанго получает ключ группы ChoiceField - PullRequest
0 голосов
/ 31 мая 2019

получить ключ группы ChoiceField

MEDIA_CHOICES = (
('Audio', (
        ('vinyl', 'Vinyl'),
        ('cd', 'CD'),
    )
),
('Video', (
        ('vhs', 'VHS Tape'),
        ('dvd', 'DVD'),
    )
),
('unknown', 'Unknown'),

)

class ressource(models.Model):
....

media = models.CharField(max_length=50, choices=MEDIA_CHOICES)

в полевых СМИ у меня есть винил или CD или VHS или DVD ... но как восстановить аудио, видео, неизвестно

1 Ответ

0 голосов
/ 31 мая 2019

Вы должны доказать нам более подробную информацию. Прежде всего, выбор должен быть iterable объект (например, tuple, как в вашем случае), но ваш tuple очень сложен в вашем случае (Django не может это обработать). Вы должны передать что-то вроде этого в качестве выбора.

Пример выбора (Это хороший код кортежа)

CHOICES = (
    ('key', 'value') # key will be inserted in database (and validation purposes), and  value is just for representation purposes.
)
LANGUAGES = (
    ('python', 'Python'),
    ('js', 'JS'),
    ('ruby', 'Ruby'),
)

Представьте, что вы пытаетесь извлечь объект из базы данных.

class ressource(models.Model):
    ''' This is your model '''
    media = models.CharField(max_length=50, choices=MEDIA_CHOICES)

res = ressource.objects.get(pk=1) # retrieve data from database.
print(res.media) # returns string object. you will read actual value of media field
''' But if you want to read all available choices on this field, Django provide as _meta api. You can use it very nice way '''
res = ressource.objects.get(pk=1)
fields = res._meta.fields # This will return tuple-like object.
for field in fields:
    if field.name == 'media':
        # you want to find "media" field
        print(field.choices) # This will return all available choices on your media field

Надеюсь, это поможет вам. Удачи.

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