<分区> 分区>
我正在创建一个 Django 应用程序,用户可以在其中添加各种事件。某些事件具有仅适用于其自身的字段。
选项 1(多表)在某些方面似乎更简洁,但我想在 ListView 中显示所有事件,这使得选项 2 更具吸引力。我还会有一个模型表单,他们可以在其中添加特定事件。
其中一个选项明显优于另一个选项还是偏好问题?
选项 1:
class BaseActivity(models.Model):
user = models.ForeignKey(User)
date = models.DateField()
ave_heart_rate = models.FloatField(validators=[MinValueValidator(0)])
class Meta:
abstract = True
class TennisActivity(BaseActivity):
pass # no extra fields
class GolfActivity(BaseActivity):
score = models.IntegerField() #only applicable to golf
class JogActivity(BaseActivity):
distance = models.FloatField() #only applicable to jogging
或选项 2:
class BaseActivity(models.Model):
activity_choices = (('Tennis', 'tennis'),
('Golf','golf'),
('Jog','jog'))
user = models.ForeignKey(User)
activity_type = models.Charfield(choices=activity_choices)
date = models.DateField()
ave_heart_rate = models.FloatField(validators=[MinValueValidator(0)])
score = models.IntegerField(blank=True, null=True)
distance = models.FloatField(blank=True, null=True)
