0
現在我有兩個模型(在未來可能會更多):需要在模型之間關係的建議表
class UserProfile(models.Model):
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
birth_date = models.DateField(_('birth date'), null=True, blank=True)
class TeamProfile(models.Model):
user = models.ManyToManyField(UserProfile)
name = models.CharField(_('company name'), max_length=30, blank=True)
info = models.TextField(_('information'), max_length=500, blank=True)
這兩個Profiles
應該能夠選擇其kinds_of_sports
+ mastery
,即每個User
或者Team
可以分別發揮幾種運動並且具有不同的掌握程度,如:吉姆(足球 - >專業,排球 - >紐比)。
難道是正確的做一些事情,如:
class AbstractSports(models.Model):
KINDS_OF_SPORTS = (
(1, _('football')),
(2, _('volleyball')),
(3, _('hockey')),
)
MASTERY_CHOICES = (
(1, _('newby')),
(2, _('amateur')),
(3, _('semi-pro')),
(4, _('pro'))
)
kind_of_sport = models.IntegerField(_('kind of sport'), null=True, blank=True, choices=KINDS_OF_SPORTS)
mastery = models.IntegerField(_('mastery'), null=True, blank=True, choices=MASTERY_CHOICES)
class Meta:
abstract=True
class UserSports(AbstractSports):
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
class TeamSports(AbstractSports):
team = models.ForeignKey(TeamProfile, on_delete=models.CASCADE)
或有可能是一個更好的辦法嗎?