Django模型可以具有一个或另一个,但不能同时具有

时间:2019-12-20 04:17:05

标签: django django-models

我正在尝试扩展Django的Poll应用程序。每个民意测验将有2个选择,每个选择都有一个图像或每个选择都有一个颜色,但不能同时有两个。我的模型如下:

class Question(models.Model):
      question = models.CharField()
      created_at      = models.DateTimeField(auto_now_add=True)

class Choice(models.Model):
      question    = models.ForeignKey(Question, on_delete=models.CASCADE)
      choice      = models.CharField(max_length=120)
      vote_count  = models.IntegerField(default=0)

class ChoiceImage(models.Model):
    choice = models.OneToOneField(Choice, on_delete=models.CASCADE)
    img    = models.ImageField()

class ChoiceColor(models.Model):
    choice = models.OneToOneField(Choice, on_delete=models.CASCADE)
    color  = models.CharField(max_length=7)

一个选项可以具有2张图像或2种颜色,但不能同时具有两者。一个问题有2个选择。就颜色和图像而言,这是实现的好设计吗?有一个更好的方法吗?我应该为选择模型创建2个字段,而不是将颜色和图像分为两个不同的模型吗?

0 个答案:

没有答案