创建一个依赖于Django中另一个模型的模型ChoiceField



我是Django的新手,但我正在尝试用另一个模型VideoTypes中的视频类型替换categories常量。我该怎么做?

from django.db import models
# from django.contrib.auth import get_user_model
# User = get_user_model()
CATEGORIES = (
('Executive Speaker Series', 'Executive Speaker Series'),
('College 101', 'College 101'),
('Fireside Chat', 'Fireside Chat'),
('Other', 'Other')
)

# Create your models here.
class VideoType(models.Model):
type = models.CharField(max_length=255)
def __str__(self):
return self.type
class Video(models.Model):
title = models.CharField(max_length=255)
link = models.CharField(max_length=1000)
category = models.CharField(choices=CATEGORIES, max_length=255)
timestamp = models.DateTimeField(auto_now_add=True)
# owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title

您正在查找ForeignKey字段。它还需要设置删除相关模型时的行为,请参见on_delete描述。

VideoType(models.Model):
type = models.CharField(max_length=255)
def __str__(self):
return self.type
class Video(models.Model):
title = models.CharField(max_length=255)
link = models.CharField(max_length=1000)
category = models.ForeignKey(VideoType, on_delete=models.SET_NULL) # category is now referring to VideoType model
timestamp = models.DateTimeField(auto_now_add=True)

您所拥有的实现需要带有变量而不是字符串的元组。

CATEGORIES变量更改为

CATEGORIES = (
(Executive_Speaker_Series, 'Executive Speaker Series'),
(College_101, 'College 101'),
(Fireside_Chat, 'Fireside Chat'),
(Other, 'Other')
)

相关内容

最新更新